PK 0]S= META-INF/PK /]S==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK 0]S=jruby-win32ole/PK 0]S=org/PK 0]S= org/jruby/PK 0]S=org/jruby/ext/PK 0]S=org/jruby/ext/win32ole/PK 0]S= win32ole/PK 0]S=P|jruby-win32ole.rbrequire 'java' # Set location so the loader can find the native dll it needs arch = ENV_JAVA['sun.arch.data.model'] == '32' ? 'x86' : 'x64' java.lang.System.set_property 'racob.dll.path', File.dirname(__FILE__) + "/racob-#{arch}.dll" require 'racob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import org.racob.com.Variant java_import org.racob.com.Automation java_import org.racob.com.ComFailException java_import org.racob.com.ComThread java_import org.racob.com.Dispatch java_import org.racob.com.DispatchEvents java_import org.racob.com.EnumVariant java_import org.racob.com.FuncDesc java_import org.racob.com.TypeInfo java_import org.racob.com.TypeLib java_import org.racob.com.VarDesc java_import org.racob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK 0]S=??jruby-win32ole/version.rbmodule JRuby module WIN32OLE VERSION = "0.8.0" end end PK 0]S=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK 0]S=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK 0]S=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK 0]S= ** racob.jarPK \S= META-INF/PK \S=@META-INF/MANIFEST.MFPAj0 =RRT7PH 4% ˛X`KFk:i;3N=aL!ZH.(ڴ36k.)) +.WBZ<~tPY|Ą}3b]_G=%Qg57D %o;ƞi>lf=/w(O 宂"挿t ڔe4Mx͡M?tأK;[,?ws ' ۙk l!)rPK \S=]mMETA-INF/version.propertiesS)MQ0TO.Q0204P04226P5050*K-*ϳ534J*I,I-J,RKRm -uF'B@PK WUS=org/PK US= org/racob/PK \S=org/racob/activeX/PK \S=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK \S=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3(Fц:aF 'dL*DBV-\l2( q21#Q„9?NϢQldB(T(%ҿRpF lqN+2f%D4-}XBmP=nHh2-c3Q},Ñ!;g);a%NSXr)㩮R=hMqkǞ&&/>tBһ2Ji4lv-3.%;b2{g7.*b섑ª;io>8PWiksg p=)W>{|_F 7QKD?Fc)#'@;a;YHM4ؖ񤑜 Q;Z|w3#gzt!kX_lKX*e~PGfה.%[ k,>XvA}IUYt~=q2xU2,Ƨ=itU`K[#Vѓ5eCcVV6h ͷ Y?xAFU_6]k[oj`fX1S ݜ Nk!8lJTCyTFݞdp5yG+Kx\u ʖ-ƫ c*~*~*J xC&xUGtHt&i`f =d .je`,Y[x[BMwpAE BLQ&zͶ23Iۙk'MwB-Mw}FcN"7T*%tyF1tklkp|o͝] PpABojWdB* hu- ܈RY{oj]mvǗxP #kfL]"w[>oHG9<s9Y+%C*ŵ_*H7x%؋ٲzm6gSJ21zWOC$ muX!}F :YF]R- P^Ԏ⚋TVDZoQsaCјCm"q+>AHSxϷ-dk6%iEQc0e"q;œaeI)"Z}<#58 fVok^qcՈF J0TR vw"-l_w=Z =.:tV&[xx˄}!,rş#3IR2(=(TS(OyPf+PNx܀HʑCdpSq/M PK \S=org/racob/com/PK \S=%eL /org/racob/com/ActiveXComponentFactoryTest.classV[oG6c`!h (B`p)=ػzޯ/}C+U**}VET~-f׉M'ڙ9s.wΙo'A HA,Q?ߦ aDEGs96aۥ#2.E1,BHr=Ъ6I6Ij5[l{Xkү`ISq2u5bD Ifnn\CJœ6=LSPÜ2CRH%E23Mi"Vv F^(^K" EZ n3*'‹ؤ"M Z,;W,TL`[좱QN ](PL'fd_)m6(07Cx ox'wWQ,H쩢fLh&YhM4=g =3%d>UU}L/jcii/rOYajY=cnrKRYMUL[\F3-ּFR?|Y.]Z0^S98V:} 1RsQb.?I*j=;NVw4( E&dW=%CXjdbqMT;es_%4񹂫6X*jd֢wb+c;Hp õT`6p5c09!>;TTPT XGc&龁f3-\+Wv"=\`J+ j-AuNJw/PC`O`VzYD) ֝J2~Hduz {^hʱ[޻hUvo/-b}m.mdrqg$hī(JFډ?txCò!8Vq toCPK \S=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK \S=<% org/racob/com/ComException.class]OPǟuekd(c Ao7iBD,&wtuZuȍGB/~(;%1M?.(KMPgVx:Akd2JuFhq:!#-o]Lud]k;azuF~6\ ҕ#eoauzA vVw \>JqM?he vCTw[o5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK \S=#+yorg/racob/com/ComThread.class}TmSU~.yMRZPjD@,մ( ho7 .l괣:34Q,I=L`'aǑ5& LX#17d>d ܎Cb>Le2~j3+q7ʢ5X7p_ _ĢT}k\B %`lVN[WQ3YL{E^j(fscW)JjlM ,ެXwkUL[T5°eWD_t+-R%od(ƯoM8ιE*&fDWŝ%{ DRq+VRUEmlUCJ`ci̹b9hB<ּu=:lJ-$`\"d ;6VM\xoH|^HJk|Cpr69߳5\<͔3#kafD[(&"J6$> EkQ.G+R{¶U6%v(?6`KlkjxF^OV`Ofqj]aj7uI&sTZS٣;& J;8L @!YDJ )1-Õ,i[-~齦tPo)#X Euą $Ni_'3CO :ut?KH”Gor'qdtp& ¾8 ti̻TdPh ÷M%f;A);MI3;pFG.Ғ#эC??b?ѲL qw"!b0b\xDhdFWPkr}p܃04%4i0WPK \S=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE? aFc3>jw5|f@Ì{JΪs_()<5<2c,XT4,iXf~zn0i'7"(f]O+yxLxVxyڷg0~yA杂8i-+j9Q R }6C,wS'}I(Eɹ$ai]Q UѵvjHz0R,yWZzzEWS\kĒj8W݌ob# hxb"&F30 2JUn(|m-TkSeb Hof"u &^;˂Ty&6M: e_$M[eye{0qKnY{Xu ΐ{MT{ :Lg'Gyf0gr,HoWiɶI&쳇->q8IeU-~2o  |I^R#ON%ϩZ' ux=M5<53L ; No]<'p@.W(^5VUGۙLFEJ"hv=n_^P"uWQ9$ɮ}Ёh1j6$N·"6љ:@$c~dj(@8F6=~cI@o\{SVcQ ʣw,@DDn&1unat|L(:ުFq!R*!}N'6DZ%F*6}#&ۤ,}rp7nҵ:r$bLߧ0d(PK \S=+#t+org/racob/com/DeadlockTest$TestThread.classT[WUN2C:@ 7-N І@jBz0$5˳s]Xv-}\.;R˕}콿}? 8p 5MX&74y|pBBcaQ޳~~ɒe +r!(x s7DVtn-SZ8E*kPsVoIe:2]rjQYWAA{$2pVvn] ^P(ɜvZUAƓ̒Ӂ,_I/痞j~3FШ4 tCYz,kdSKO3d·[-huY@yԢ#ĤmLx oHb v6Tplb Cׯ&mPlbƻku~M$۟ :M<1 d(zW7'D8Wk2,mjiSLm{&vlH(?:ed&^7Cvc9TVTEE>:Wv1z&˅[TkٙKN@!ꡪ)P[\?}iB&SdݥF^'b[mYaġ%[qc|V $Kei@pON!633B c8M:ć8˛p=8~L N)q:89q:|^̿Pֶ1;gKYFgli6:?xn'aS0v4C%zWm{$( t_DXt/EbD 5:1's 9nDu ] ˘lWSlW?uL횾m4O15`!֕&9ohś'9?Knbd}Oƃɧ} {ȴn"[ӝR4/yoPK \S=` org/racob/com/DeadlockTest.class}T]WE~&eCMMkEC l0jR<,lvx^y_ =?lvϙyߙyyޙ'(&1E jHQ(X"E7ݔ'nE1>3-E,m!iW%ؚ5V ϯ^mp y'UU.0Zplm[چM6[춀Rp꜍Ll7w ZInm)ǽI7yB{yW9̯0 ˩Ȥ.}prnlF+dSo f]}T3Z4U1={؋$imI0[ّԄF*78R!)3ȡkFܮQKz|w/ɍV|vI4\'vkƚ)%!1d1+xQ`Z^WYư.@) lR>\w)r۴{B#C[#4tXNA i_WiZ5Ǯ{1TP./OPBQ&{\) \W}u-ߨ^@t ngU`u6D[!Ji{6ZZl!]LOh*:H[:.ɨ%}|:;@M;7gu}n7u۴ -Yns@DF_𒼚Z̍.Pi;Wbێn.HgUAk'B9Ym.-߯h1T3rq$]@EtaL-&GPթkWk<5U}E5{:I'Zl6FU@GPӰVN>;jmWcLkbz( 4&s=5 8MklQN\$ք*ѕc1#0ո]2We˥ *אj^ɠȯ i"aIG#dbhkV-Lh)8mqD۔EKHDn7kŮ\vD"3wjqCq3kIi Lͨø08~q.Sԉl$v<qm} tu;ˍt1&lp_t UnKGaء̟oЁ@0݇•N)Nk6;v"뾲lŗ)9͠I}'ze*/KG}$CL xpsg+^֎O8">%Eo a9ovoH & y< _"#\{+eB۝ko`ƋS3Eꪙ"{xي il O|4ioCuY3bK ;=@gڄKa1CٶΙ(7=6\jB<')zHe VO5<>J;/m&O*oF"Ί %qV8}q9>'C? ~ܓĖ?NppF7刌͎Eiv83[\G`c !ˍ4}WexZQ`\vEd?H J)D& -IjcKuV=$R915I{ŲL,٘6:V+1Sccj^ՊZ"m$_ҩXoy-VW`-"A.w). hPA˱!SH X`󬯨5[-FHgX1LgSBlT*0 IART)<- jZw/=iqX{>aw> z \ :pGEŤ@1GyU.$fwgs8|5S5e,;er bvR**GIpiJTΰwxMb:.[Z}B 9~@ϛ6#9B!ˠ,[M?+}6l:~jXG?#tJY ?/H,غ~H;9  #ql)zoXFn>\),i3$Z9MP5{(@nzBuG!(rK_(q߉Ce(GM8X/a @x>/`@OrIqļsUR.F h#:h|&R(Bm0'Ss܎0w"]s`~!کF9`d2\% W4a &[#;`'760{jVdZgnmaM]T=zjp]QtfeMjB  >+lSqYA#x$* f'˸2qﴧOw}UbJ^ pkxcan1E o"rDE䈊!ՌȁY4WZ}`/ ðރ LV ZYkjf㳣hT]^xE7ګ#qϲ ?VgnRʘfh)Op=|6?cp3h Ġ>MR2(-s"i ub ίOr]@^ "'PeҮ%TJ#W&1Oq+Q/U<`Gd'PurWhڧ&3p|."~_d_%cX/b!&b!hX3q-)Zt#`0pBHQSiH-E ‘hFMg\M`(tB#BE7%1.1.1idaeyb`k*D!S7(;r@C wLk7c-ob0~vq2?XT8Ї.觌!ݬpK%\.t  ]….Bw> ̭Q0z=Yw N(8X1 Fn^!s1 F6 Tts1 FMj% 'w8F[1܀ rQ0Z6 ڐnG;\t2Q.(F!F#.Q@<(xcN; ڐpLEuQQ .Qpa3>Z?g1KIJ524~e]MI&"]_{K٤^AWQ5)clsxRT0Œ0JsLҞҚ ՋL^dBJ az/~:ȹF3ڐY:K_kJx,rpkAeCjx(C+jq#[+?G( _ P'H@K"msK@m??}nIh *CPt'4HwD"Z Q!~IO)-#%6"c@z|D7xHHmXCgOJK%xԆsKt[g(Y-#ddՆB, Αf~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK \S=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK \S=L"g)org/racob/com/DispatchNullProgramId.classS[OA-ݥ,"ܺ@Q.Š bL5!t;ݝfwjb4#)3KEmf\}g̗o?P1o܋\qE,Xb㦅U k 2Cvq!a"# k">ീ<Ŋypci3e°PQqËjBL\{ ؏U#n}aXD_r2Fd55e PVrb*wv@4x0nB'o|RE_7Sns8ZXikWDGQB4fÕ-SbXXwF76.YO<61T`"l7Imw{?L,3&#ПatHմ0S$e]%(s%/fP.֩Ż(7ImԏS>#M ڕ.|>Rl25W0e EPK \S=+vK!org/racob/com/DispatchProxy.class}R[OA]X ([xn[ /&̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,e9 *=;tӻ~ `/BC"n1B/n)4!(H$einKs'F VXUTX3mSFIM(&CkZ+-\<&*x}baje"5\D%\a9W7MY_Tc@CPۜ‰ muJaz(XWxOߨVpR/YW*6%Ͷx`GsI2мp S-T7(,EjNyYec=W6xِw㭚b˽w=?S3EOw꧲0_NO&-/R/ ;0,bRfuWC*?A.1mBȠ̲OP L6Ai42g!oQŰg=F0J#͟)kߛYW!p1*BsUtVVu[;mF(,@L)x<2%ƽ +*#vƴtn"Nz"Mz)е8e&M$ y(4PEI$ HaMy.fLK?PK \S=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK \S=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK \S=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK \S=org/racob/com/IUnknown.classTmWE~& l Vm1IԊKh HniX즛 [59;%㇝{>e#[ѱ5y˺=&_D/5|cYGO)ŭ0k;jؕ{k_Mp=~𣆟cڞpF3[LFɥN)8XdZK=a`L1}ЪS }RNF"M, kpM)ʐwhV"mǶҦP>}ê`ʲeEXTbGX¨.jVDZLےF*Ha892NeTsM؀+J(40f=#(izNڮTHOm[Fs/_V=TݼX7Ee$ ۱ )Yx74a 1~sEJCmOnjZjxQ!#cX 78J8`s808xOe]>2,xNEEVq%/0y2/nDTЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK \S=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87Sz}=(F!Fd_Rra ,8`d*(|OHӦ5kQ?[ZۖT]ngҲ[z-okppSL/:c4SqiTyK1r3@% ?5SNUxMÏpiix57\3cxs\@L&.'~ ?Y ?/] cs4 -  oӒZƏ<3/-%~);W".TP$i8pz5-(U2]rrsy;.OrB32_ h,\HJk2ѬG;TWv TQ#fJ"w54=>Viտ+9xn^&eo 5؞aٹj89f]JǞxV^,ٳs8Z6וaѶ|[ _mvߴUCy##9 9H9?vx0~*RƧ!H]x);7so9ֲsϟ-;o!g>&ສE_d$ދ/؁\yϔC'9a1B_B8QH7JH{ˈ B#756uC8IuEIv~+h.cmtj$;`{[u4tGE,/F&_G"6"9 5icӒ>EĨ7Xd6k2Z}We]E~eae#|>̶=Ma-<^9sΙ=ٿih$nhƄ)N;j3bVg:>7|N]~kXP/u,X2Ѕe a1}h՝;Dd/1Za~4n;y0C4uWmY˛5g;j|m!*_"gНȒ?F/-^Q8D.MޠM#z0Afb+2@n{$-#dr LQ(H mS*Yb!0V,Db>k 5nA]w<'oPK \S=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK \S=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK \S=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK \S="m* org/racob/com/ROT.classW xTL< 5Hd *E$d2y<27 j.jWb+$Lk醭fbw}_4ΒL2ڒw=srk]wNV^.1^AX7ͅx *>w/N8)x&x.4Ã{qƒN|X[#>U>!w?%(xA|Ha >i0aXG=򴄊⸊"lV[ f46PVlwN"+o8Xy^+*<>f,ieso)!PX3eɜ?`ytx0ǜN \V)yэd2bým1#G/$Z* Mg7C!b+(있3F/Ȏ`$mXiLN.َI.gk!k[Qb0'ePEaX %0wZ"˳F{tt`]حx-xmq+m: n:o VR-}|V'?(Lo wu|W, ?c:~(X\;N:~&|zJ|]UB/pW}hц JfJotт&{Ѥ: 7 BјA>>RgDzk| #VGYc s8őS_7?d5 l (BF4jҎÁCWb n#U0oJ Wf;I5O<Î٪Ycpu<\4h|Gdb01BQ.tgJg~R㸽w8+YdE][`D"f격uV>*a#Kgbvڬⲩ-l"Ul3 ̼)I٦I@ }&(r6,Bca1S\%Xa{e.trY\cZ;b:Ib&x]Vhd?A#>j6''9KT4;~1Amț0Iw9l㯬Y+vk,nqqDt}ѻ95Frmvv)p_q3EH t'pJ5)!OOfl^,MIp2ْ:G9y y ?UV%pɩOJ niJ:"U@ʈG# ǝIG_7N( t!=WQr6z U.l:,N"zCX!(=\aIKPryg ţvVTe?p> a9g( ̻aXJIjVlpn-Ґ$ J3o9?%ڊIPWf>#c'ڈ9MtbK` -2a7x M}LM@]+pԣNeK,1Uq㳌|/1r&zPt+ϡ\S*y Ë;H%ͬHj&Ab\K5I4'ú\o$(w-\&YNJ4T2BRPQ8(jX85sE, C<9]frxU{*a\bQ@R6+%roi{~o6 d0dyPbT2 \u:\͎mdgXS"[XۈLz\&L!3ı1Mcrf-`D]Ax PK \S=iQz6 +org/racob/com/ROT2Test$ROT2TestThread.classVSW\$,xZ$ jJPjkd n٨Vkڇ>ta:Ӈک uO}F^N8~{wﻜo__BhyJ( >WpAqސ!ICPp0"hop9x;+xi?ʿh( &|OEN+'COM) Pԯ걢kfc I3cn1"U] =eRv.6;n[gZkف4oPYԸfa>UÚ.yT3PFV2V&ui:Z0-3A},KNCN:+LB V˩P{,pz`| v-#pdIg+ ԚIWwnh^h%ZϸVI52|[[br )]#}zȻmQTpz|)f+]&7N8mD-D)%UE'N8>-CTAXiՈjߓE36ۥE\eW⚊8ຊiP˥  {ݣaM`KxCiS&VZˤ4|Dϕ[cx hlgR>N%^|Stp09]p\'} +Bŗp|%3T^Yn1>=Ǣa4V*aks-rf Wy#U(^N +RjH5G"v7-c0>W yފo!kys23KsY""2 L;v s_fre4^\o#/ 8Q>T@}f% %R<m혃'o^~foA^ȏzjh ^+}-p'W#Uv)CF;}x8CF"4d,fn{)X1z1ɘhohHTo$YF2hkA] 5xyB+B8lWJȋGZCK?-%ŗVӿZg]rZ(@[*c-/<DVDVy[Hǹ:ɪ<b=s︈Ŀ .:\kH6dh5-א7a[K]sEel{Ef'h-<8Ab'qԷ+g;G8?*x1gCTଯ|o?:]?-xM9]B* ]/G__wZX&{̽g=s~@7Pqc50VbK"͚4qpUkGavmx~{5DAiض-y0eڦ!v"ug0m :<֮pM8#I9]u:z9OJn2}mvf9/I$J=9#)abH1[L))yrT< R8ϰ_n |״i TkYA%i6QueſaXk3dNH æeg”k:jc3v1kDbTmݐ|XEQ~!0`i$d!؛ !+D 9Z)c@H};Mh5w+KB{#DGQG#҉8zb|S%:B<}"$!`5h ͋^ ٌYt(9 oxazaUљC#BY ֌VSQ=>Y!ڥjb5L8Yv+CUU;or㶘aæ4ᤑ :ݤT5[S3yG;O,Pi hvwŷǹ㰲Mhfh ,&TQt65= 2x"F-i:g܌ qjcFR8h_dzYZʁunF2eq:߸zܣ|<9/XЌQJM)j4dTe.=ѵ F-s4@MgG=Gttg}hM)Bp\wL$q ÇXF&U$ huzj7 {#n6 ]0蒻d7`ߐg`3NgvӗW+ ~崎P?2_7!<ۃj4_".d&mpŘi}&pa}25V0=*BS03UU.(3v`=}t^PK \S=7^3org/racob/com/ROT3Test.classS]o`~+2nn2- ԍ+8 _*kI[ozOufؤ9Ob'2، 0^"+vnqS&#ǰq4\w ePje8w]eXkZw!Z 5u2FGmi<ɺwLaϜAoRtvz;v[G 5nkVd'Dsrv;/' c!ҰGNxh Bӊs+ca3D>VOoxiFk8g\ (qKA%_Wp[ !  }T i|84,^\3F U]{Ű'RFI;gi\;63&L2AV~8IR#(!,VHSIX%BYOX{j5z 0dhu yp"N]Mx%7??juw"|&[L4bBӸ @#} U-Eq jl:կ Y+~,Ce_ AWc_#=Jc/PK \S=>/8f^ org/racob/com/ROTTest.classWoWw;lNR;Iudb'.SiIi={;23i-@x @R* !~wggOJ;s=;9w~sa\8& <xRdQa$PY5Ԑ \0p)qX 4NZ5|DkhǴ <$fpMS tc/ kxA'WQ^§pQç 8>';lڦ'Iw DX7bdqr5nZQhzFw*9'9Scc{9?hZGg<_NNYSӮc4l|MT| l\vlF9tlwh,Wh[/eFA1COɨ=<* +VL+O;j'-H΋ f9Ny;-ղ2?o 4e2%Мd\12aOeF}״zU%yT2ĨSqsR"bO &']A=pUq)ZIa7W$b_—J_ ӪG YypK^b؞nں놧{c9,t12^ddZwiˊ(=z_7Mvݰᱡp֧t ܚ6<%-,}Ey1-IbAh͹kOWWWI_` ٰbTJ_aqG}IxAx6:%]S tUեEeHC4V3 tɡA6%ǝ}G'sRW^4;U10:<)uOK=ǛVrz%ES!;,Y塠C,S L7WnHHvWʼɸH 88Pˀr)i[V`T<$]eUAI-N1+~] +t`,xOVr\N#Zt;h3/IJ5/) ueIP)8-;xIdיQJR &ۿ끺>Ą<ϚQt(گvm}tŒ'H{zr2;vn+=r+mĭ8^O{;MnU+k^"QޠN|@5&6)4J<ۘ\7-uB0PBt2|fP/x0岴I+ ˶FImw;|Va$ؐ&C#+AZt*GӁB06_d>oFw*ZD$WqY~m.57`*ewQ7Qr*Ypn=#~4c,\UAgGkb"4jDgx>z o@Ki<Vik} wTrkZg6mz/\I[zS$80S+ ۰i"@=vj' ؍24= ]7" GFG@=W"GxkE,=r8r$6untRDТHXu;7Ǜo]4OO6aSE#b-s2h`Z]>ߋ'9vm5$y| j[6~4jkCUc&'jJ'^ՙÎ'ugj-㮀9a;,m*|lAu F'gwG)ɳagZLM7Z /յo%XQ!F:*&Ҫ$l%INR K `* cx#x'p '&%a 9' pQ$hO.L^,r"2xQsp_P\5g<%(c5oFCq|_bSG t/DNv JgoWk[?I/UX{> iqNƷ_)\J[^:ڎc;80Lz==Yw!&8xMqb4hcPK \S=YI7M org/racob/com/ReleaseInfo.class}TmsU=MɲijBZ t( )Ҧ&ΠR /LqtƏ2#۴i!e2/=9?<aউ𥉯u op'of91pW)TM. :}RA@T>+sK cVe2f~xVr_0^%>ϓωK[MkxjQA[v\]n1g~cw쮿k7dj\_=D`~o՟DQ~Wa=> $0>9=CQ^b3V$e/&c>cFE<],9{:lAW9Z#:,jw 8#0{ZXx:3bE׫k5~)XXdž9=0 lt1a(E|´G}Dߋ:PFF~dzguTa܁ hnJ'\vGc!{{E908gaV+S f835cHpkBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK \S=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK \S= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~r't$ &"+A ! B$_dLLW]eU|T^& kŷ{u}]{w=3ӝ{LwSԩSU=`&AlJ qםɏT<[ *c:QKVq~VSG\bLŸp5?z55ܦ#>cnp;5ܥn pqG_k{yǯ<(åiv>*>W/olEOtH;3:g'X A_z֒ԁuHAlA_%nE?⡨,QfZ3h2-J+6c%%eh,Jh, CT'aIu5Hͧچeg՝zI˛jiBX4MF=#T !'IF<Ƶp{9PWS8 =OŴ4BZWac4i_IiNq-pǺ%^)nsVd[ka@c##F=dh28w깊z#],VJ4FFExc W՘UfU-W՚UfU=W՛USlb).2;,E\,,ׇkfDeT =Ӕ Z\s򊌥Z,&!Ene &R Jb K%rh ^&tN')2:L#-ᮈX&&7erhӍ 1"Vtcb aґ cq,2$BYOE{z"BS8GkM7"V@5R(]Ut5զTkѶ6ei"kxD&"D dt}dE/Jcx:jXPMJ-'#خO͢8]sǴMMT1|rg[ciY`d[y@kC݄,,7+bogVhy1SMP+ԍd`Eڔiz")ޞ.Nk=D8)-h9rMLF'#uuDzyJiD8uĢ_nӗQVwll Cs:z!7\Fx#RyO}fH~ ƀWpxŴ`<3~ ƻ| R Қ yq1 q M,, _d[t5t粢 | _IYg`' r ?0U|VS*30*a8{ф/X\i^pfWqaNy<:zNw |)|yՅH\k\\s> Ҡ &Z\㢞r ` Y"+r']%'Z:M ""2 30#Rp7obsc"fSsjښi=ShΥÅH 85")DTLSj% E1!91& x>~Sn1]h+t54?K@Q{OBJ{^?gX댚/rbPpeAXXo#G\Y YV ^jM|mԝ..|$#ՌX/$xHx'C?l Ϡ8XmG ChjlgџZMG8#??s+:q~@w|K8Kx'%WηH9ŹN_#]9{މAە~*4WIIۤa/q  *4*Z PW- ^ܾ4Ja8b;[,mcDܾ݈Ẁ'`#aA&*AQ7ޢwWl 0!8rfBͳAӹjpFji35TF7P94r.j:)a['%0T$6!/[`%>8*u-VR[Lyx#NE—y)遣-tmfl0p:6# Pa8)@Q1c-4!]di`40!M8.pe`V! }B6xD)Fy!8Xtplvj'Yfg]6:#q=0 v8i RN̵dw#itv!F-ə я}LFy4ݰ`j36#U~_v>J)  p5^LW&(yU!X-85L֕ć3| 8߄-cli)CZTA?#$+f$孖@-\Hj٘m&3%_Ͷw)0fi$>mSZ-ǑlNaM |e4kbF+8z̥:+Y -2:#)>(Rs|I`o? #gδ38`dګk3 ΧI\d8M..H 93hP0>ZY ^tЕ3lSgMmW- kG=;@ thO|_-E,t8pF*;OIBL;G}:kzzNGO |'19@Υw3 _ۀo@@c18O(S P8PX o`Io8>SiV@YR^|w85(e,n*-un*JRYY*17-Jʠr K%rT.*rRpSjrrJRtSkRV,U.4(O\Yae"na Ve}Up@*?Tـ'+7Mxr3ޯ܊/*_Jr2SKYlQSQnWSRW>U(y*CTMYeJ>U0a&LU10Kyf+\CV>zcX|bh.&l/?-q OL2STlS<Toң4\nTwLe:3 W1? vj rN.įš]p]=J߀ca+ k%Xn]"9-3?3.W%4!)cǏ{j(;s&it\x= b8x$$`żI׭D3ÀO8jz ILam'sЮ6u40 (;rUМStVG%_]7 3 CAyA<(C:ijGΏ,@}6{.]"BCP{.)Yi *Z~FC4H{Gn~2P(;]|i4dbT`CLq YJA6?Dwi rX jOW~/-,/\:/qNY+T;K\ҡXi%cd_<7+W=UĎ[Dr% Kd2WqreI~xDZM>3L+L[L{HFŜ # c0N\^(m!zqoǙ Dy5A3#PK \S=hqu5org/racob/com/VariantTest$VariantInitTestThread.classSRQ=LQDE  (>g|T,JCinn0L] Z.}-\*RJӷݧ7vtLK ۥ $')c69`CS)eWJ ͎焎垯z%>, +NO>O/Xcyᨪ ɇe↯ZSV޵|) ob}A`qkvDrl[tybz@y_3/ɹ$kD/G+z"vF\S3q]wPK \S=e}g(org/racob/com/VariantTest.classX{|T?gf 0䑐o0BP`- Ѐ&̍3wU+j$Z]nwumۭnmkVfw̄<~y{}Y"ZOVzKoz߲l|U|䦷K?Q.!3)_h||R_ikb~aU@-dh #G͠w'_/YgyEfyI<ɟ>_}Tn 5Ej Y,حq|dC>ji#Cƹ2zyv4/;gr}Cf'h/B''[hb'/bY\"^^&Le+^ū5>[WGky5>Gsej7jIu '@ǟ^nFxy1MGB1kC,b5 =nZb1#^ %F)V3K2yji\03F1L^ 'IA3VʰQ, ݛFsc+t^N#l1qӤwbWv”+kp#e*ʎ^YisArҊD+kC1 V(.ԩdVv~ˤ kFՅ\e&pXK4"tcTiۈYݍf2BɧNM`iYpZj0>B28.27FM{(flm^]5fˈ[H[$#b@iΓeB$5ZKHFrC4j2 VČD1M>f^7-Gٓ l,/iG(f84q#Z )fim-2b jCbfAe]hOΟPR3~#"B@p|.#hdrE>X';a{- ,1z1ڱ=71;:+5xX R!v:kxH>j,s] "/_K8PNQD[91;B 4t?rP3e|i.tSeutMO: ?Gx'TZk&~QnY6ͨB&wSHȜ`n͸ntq)i^KffIQ2{/2:@Qō8%1t ?_ Z"=ל `b0f\o3,:*C("N?櫙J3=[}LK%6w]8`' wUX*;PB JT՛jJzlVk [t 7}wj9΂UjgD~=y;B pn'PGb.qSص 0bMXms2fE:2HvY%:JNz Zs↕ǰ0_iuA,#&>"13m[N$a@*S($[72LZN߄!Js6ambCSfT)өbpvAd$M oN9O*['4ĭ(J65\&Y7ː;u|3߂D Vɜi0Ϸ!vcY1uC$-,#uUֿ;1?绠G[?N(R8mㄴP*L=n&c-^`EKD}|EAVPa>r䇤<̔cJRG[^1g8-X2-t$ 5Sv&c P*1n7j6'ϠY*Wn$WiT%ct"wFK{UjTW3v2-F\8 mQl rI|Doĝuh@a'0FE)7#^ʗ18}GpveHj̬ qeu(aJMHFZTn E%Gq/^])7A=)lҤjp'Q].'fJSڳrA uvr(/<|wac*Jӊ7#9j3@n2 8 O<34ۅfCA^b)A78  V0LjaJȗD_<Q^9Ҵd$(mT@pվKb94Yg2FpN ( oCɨiţ9Z#i:*;@!s۝Rv9*ȴ4grA/NEt r|-[~P͚GI_PD.<Ǔo;Inc1=xS6=\4&wS>y(>҂fJ{) {w/2g<^柳6^ f*t^S{i2OM}4tS:>f)gl4'8t4ʛ L}r0oI r/Ss/dž*p,ye{'.Vvsl:yh&M! JW,2v"#TLoREJ^Ky+-]i?JU,9rMT*ruFW6.szK 5ޤF۴.muϦ&Kv>w݃ ܞ{>rV_\>$K yZOPx.C0x Kɧն'.j*Ž&X2[,s[xzi9 +R6A|t&[G^:{[ޚL^\3~^`z}zp͵M*[f6 45KIkѴkoٞ OC˽JsC7kZÍɁӎj i$ a2J×B:@+ j`@^ =N7Ыtx3v4į!~9 w 7+ۃSz5qZ~f)=ϓ5óӆ/ e҉R 8s/U6z f|ym'?~k2  2ZM<? )Hg ϣmGP7q `}PJHc)G_WF R?F 1Ot+'P&f(*z6!*롱uBU$Єm`2蘶Z "GD`9ʣoG(]P t28İ!AbsFPI6H>IyPz;qXz&HMAhȽ(e;J;6(;zLv ee4ϷR?SD?CHDOF d# *qAzKT8t}&Mc Mhw{mv/nG%SmGH-#QʼRRttWQ ~jmbzS!e TH'>4@m(1vmX { [!1՗uT7F`rfj… ~ňT'߮7OS)og GjU::ePtIhWeWez ǎSI,Uy dsV]WV/uVe BeUivKqʛW]z'iOʠ0hK{H@^\n"?qqZT6%fJff?,EJ')A]t)J]0x^Kn:GA4'RP)OBW?Λ!6F~[;Uͮ0ݵ#*D߂"-NQ^@({%jңS#~Hh:G};ՆJ$"E7ɩHCK]QC`p:lhg\賗I"UEe?K?m8I%H"kcF#g̡6HC e^It=M /;$YiWk]mi>@KQ6O_iߡkgiz:5g,ݫܫ馣 CnPguٛ2:}Xot|s3C8eEy7-=Ԁw0>$)W>>D*:JkaIйUw^EsF霬86G4aP$kc22r_T[h",PK \S=~t $org/racob/com/VariantUtilities.classX |Td;\HL $yAx(*QjB &$@n00 _UK/k+J}P-eV׵պ]kku_uݪ({<&4|sw>Ի= `|5𤁧ig0:?ggx^7b_u_PuK%`6M71[_6Ti4_:WtO:^Eß8 /x=7]5 F(1={Nj1q#(ܯ)pMd&"M u0t@R&ź2i4T:0/tҔR~ssi2U$2/ )\SuXdi~Y?jVSz,?eh_+ T `u8ǐ~i<]1/(nMs q7lbV4((iotAkg-k:;+A+9>)V*sp^8JZXmjI)A=`iՂफ:ni<6utzҩ*yTLS)3D8j%±h4GptaxItح k'Rq"sgSe-O c$'Liu%P9VdWNFK"7Ln]$fr.eamLϺr4Aҥ)MeXt12jƔkuu\oʇ8\`ʍW7z+l-1S>Nr![Or@6Ӿ5QO26S>%,{ \S>#5snneKu5}iqy4-9+*ۉx4erwNg]V0+#{4FkVmْX42bjZxpd0468;dEBvh͈…!vXz"M)|2ƬW/{|M[UbC`*dHoLs,:I]u4Y7]ёH$vZ)+Rx|IPő5"V|v}r͛ªGu* G nX,5n3qaddb1^'r@lz*S_сU!'ބzLzPgZbsmڳ]2NEu:[v̩mzj,sKע~-:EsPsg4űY5;YޱtqTM~ ڊ7y>j,.rw-h>N_ nNxY]9$$ 1v:\"R#<̬ɂ сĎI|R1JU|8ЖZXFH?걫?/jY{B>'h]yŁ4;^$yqᾗdK} cPgW{g?~(s~07;'QjO 6L]nλNy˦q7Sj[I\0i՛^"iN?dƚ|["/mT5{ z/[Uv[ܣJJ 20ܟS=O Uƍ_usʟYkEQN,;D>ȸ!:N\~vW$?ʘf"xj<.wWL/">i?LNWrSj9Փ5Lj7G@\Շ3Ed|sAQ.p+G_: >'2]"܆O9,w˄VG=C?of%QP9B"+V!5Ftd%I\??\@yIZ~U+}5iGy.`ن% 5| Upjm`WVp0*9x#uUAVNJ 9zu Ʊ23d[S0Τ y?}Uc8;|TdpsavF~ܣ9O.M5'9O.Oq~F&~~: !3_<4>%=/[kN{^ww:wj) \68_eGqy86|INkuiv8(x vv7ư]R2%qVWWVndU&3W`al'bLwl=G"O=^?4ľIx&yFJS 9Ye~.E&-MVڍo>\1/J桼f>"_QTTD;^@ J)G`w{o_J5aD;N b^1N)"Chz p#/ 7Xl3.fFo<MovB3#yPoE_櫤 䘦#BcMQW!w4OP0䞉LFkv1 |r:KH=:e.S<d`cЙt&oq1\aUU*4a4.c@mCe54e—^yF"y ]Cs6UhN?q% o;$HMOϟl /`=9Aksa]>&l^@lY.a 6!_qM`D*Of+ۣ;BCM9LHXM7b8k}7@>}Tt?R!Y ԩTEuڊAUTT]1\T(~2Gqx6BJxv4uhYm&mdh?c 2u<]dUӵu*&j:\\#DWϘJ5*n a˒$H4={BtW b ;^&eq[TG)"PK \S=GH3#org/racob/com/VariantViaEvent.class}OMK@}OMc#Rf=УSE}.day<I$7̓qG!!BRk{,ޭJBVnQ5oNr]F wgJ e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK 0]S=!M.#?<?<win32ole/win32ole.jarPK US= META-INF/PK US==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK US=jruby-win32ole/PK US=org/PK US= org/jruby/PK US=org/jruby/ext/PK US=org/jruby/ext/win32ole/PK US= win32ole/PK US=P|jruby-win32ole.rbrequire 'java' # Set location so the loader can find the native dll it needs arch = ENV_JAVA['sun.arch.data.model'] == '32' ? 'x86' : 'x64' java.lang.System.set_property 'racob.dll.path', File.dirname(__FILE__) + "/racob-#{arch}.dll" require 'racob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import org.racob.com.Variant java_import org.racob.com.Automation java_import org.racob.com.ComFailException java_import org.racob.com.ComThread java_import org.racob.com.Dispatch java_import org.racob.com.DispatchEvents java_import org.racob.com.EnumVariant java_import org.racob.com.FuncDesc java_import org.racob.com.TypeInfo java_import org.racob.com.TypeLib java_import org.racob.com.VarDesc java_import org.racob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK US=??jruby-win32ole/version.rbmodule JRuby module WIN32OLE VERSION = "0.8.0" end end PK US=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK US=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK US=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK US=QULL racob.jarPK US= META-INF/PK US=@DMETA-INF/MANIFEST.MFPAj0 =ɖIVPH54%"[`KFk:i;3N9a>g%R7vRGX|ₒңز|<kG;* q SRfWˌRƲrP!Hp^ipFLPF!)9Lh\a߶e]TP޴VѶKcd,;Ꙡ]C%?6qpD oz94k -΂xfAϲT Ry"PK US=bw META-INF/JacobVersion.properties5̱ 0F=wՔ@',tib%>Qt?kMvNBX2왵j.,'[:oK3-:-b"zSul~T,s̝VoPK WUS=org/PK US= org/racob/PK WUS=org/racob/activeX/PK WUS=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK WUS=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK US=org/racob/com/PK US=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK WUS=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK WUS=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK WUS=#+yorg/racob/com/ComThread.class}TmSU~.yMRZPjD@,մ( ho7 .l괣:34Q,I=L`'aǑ5& LX#17d>d ܎Cb>Le2~j3+q7ʢ5X7p_ _ĢT}k\B %`lVN[WQ3YL{E^j(fscW)JjlM ,ެXwkUL[T5°eWD_t+-R%od(ƯoM8ιE*&fDWŝ%{ DRq+VRUEmlUCJ`ci̹b9hB<ּu=:lJ-$`\"d ;6VM\xoH|^HJk|Cpr69߳5\<͔3#kafD[(&"J6$> EkQ.G+R{¶U6%v(?6`KlkjxF^OV`Ofqj]aj7uI&sTZS٣;& J;8L @!YDJ )1-Õ,i[-~齦tPo)#X Euą $Ni_'3CO :ut?KH”Gor'qdtp& ¾8 ti̻TdPh ÷M%f;A);MI3;pFG.Ғ#эC??b?ѲL qw"!b0b\xDhdFWPkr}p܃04%4i0WPK WUS=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK WUS=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK WUS=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK US=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK WUS=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK WUS=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK WUS=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK WUS=org/racob/com/IUnknown.classTmWE~& l Vm1IԊKh HniX즛 [59;%㇝{>e#[ѱ5y˺=&_D/5|cYGO)ŭ0k;jؕ{k_Mp=~𣆟cڞpF3[LFɥN)8XdZK=a`L1}ЪS }RNF"M, kpM)ʐwhV"mǶҦP>}ê`ʲeEXTbGX¨.jVDZLےF*Ha892NeTsM؀+J(40f=#(izNڮTHOm[Fs/_V=TݼX7Ee$ ۱ )Yx74a 1~sEJCmOnjZjxQ!#cX 78J8`s808xOe]>2,xNEEVq%/0y2/nDTЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK WUS=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK WUS=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK US=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK WUS=@|s !org/racob/com/LibraryLoader.classWwg~%3 LJ\7BD P&HhU'C2dw&K/V[[Q.K{N_G?rz}=(F!Fd_Rra ,8`d*(|OHӦ5kQ?[ZۖT]ngҲ[z-okppSL/:c4SqiTyK1r3@% ?5SNUxMÏpiix57\3cxs\@L&.'~ ?Y ?/] cs4 -  oӒZƏ<3/-%~);W".TP$i8pz5-(U2]rrsy;.OrB32_ h,\HJk2ѬG;TWv TQ#fJ"w54=>Viտ+9xn^&eo 5؞aٹj89f]JǞxV^,ٳs8Z6וaѶ|[ _mvߴUCy##9 9H9?vx0~*RƧ!H]x);7so9ֲsϟ-;o!g>&ສE_d$ދ/؁\yϔC'9a1B_B8QH7JH{ˈ B#756uC8IuEIv~+h.cmtj$;`{[u4tGE,/F&_G"6"9 5icӒ>EĨ7Xd6k2Z}We]E~eae#|>̶=Ma-<^9sΙ=ٿih$nhƄ)N;j3bVg:>7|N]~kXP/u,X2Ѕe a1}h՝;Dd/1Za~4n;y0C4uWmY˛5g;j|m!*_"gНȒ?F/-^Q8D.MޠM#z0Afb+2@n{$-#dr LQ(H mS*Yb!0V,Db>k 5nA]w<'oPK WUS=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK WUS=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK WUS=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK WUS=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK WUS="m* org/racob/com/ROT.classW xTL< 5Hd *E$d2y<27 j.jWb+$Lk醭fbw}_4ΒL2ڒw=srk]wNV^.1^AX7ͅx *>w/N8)x&x.4Ã{qƒN|X[#>U>!w?%(xA|Ha >i0aXG=򴄊⸊"lV[ f46PVlwN"+o8Xy^+*<>f,ieso)!PX3eɜ?`ytx0ǜN \V)yэd2bým1#G/$Z* Mg7C!b+(있3F/Ȏ`$mXiLN.َI.gk!k[Qb0'ePEaX %0wZ"˳F{tt`]حx-xmq+m: n:o VR-}|V'?(Lo wu|W, ?c:~(X\;N:~&|zJ|]UB/pW}hц JfJotт&{Ѥ: 7 BјA>>RgDzk| #VGYc s8őS_7?d5 l (BF4jҎÁCWb n#U0oJ Wf;I5O<Î٪Ycpu<\4h|Gdb01BQ.tgJg~R㸽w8+YdE][`D"f격uV>*a#Kgbvڬⲩ-l"Ul3 ̼)I٦I@ }&(r6,Bca1S\%Xa{e.trY\cZ;b:Ib&x]Vhd?A#>j6''9KT4;~1Amț0Iw9l㯬Y+vk,nqqDt}ѻ95Frmvv)p_q3EH t'pJ5)!OOfl^,MIp2ْ:G9y y ?UV%pɩOJ niJ:"U@ʈG# ǝIG_7N( t!=WQr6z U.l:,N"zCX!(=\aIKPryg ţvVTe?p> a9g( ̻aXJIjVlpn-Ґ$ J3o9?%ڊIPWf>#c'ڈ9MtbK` -2a7x M}LM@]+pԣNeK,1Uq㳌|/1r&zPt+ϡ\S*y Ë;H%ͬHj&Ab\K5I4'ú\o$(w-\&YNJ4T2BRPQ8(jX85sE, C<9]frxU{*a\bQ@R6+%roi{~o6 d0dyPbT2 \u:\͎mdgXS"[XۈLz\&L!3ı1Mcrf-`D]Ax PK US=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK US=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK US=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK US=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK WUS=&<'org/racob/com/STA.classeR]OA=.vٖZX 1iІIYvqښS41GLץM=gsط`c4YXŚUBIq nZ&tL ެd`Uԡ{S6Ìw~!d7b)i.üʖ#6/l;C#~tdixWl3<.o95 (UUC/:ja_z╯d6f]fFnڸ T"g6سy+a+I'Sc&W:.7OD x[ 7M!J"tw6]7]꒲4et* SV@b@ 99$)c=ڌkE H0Dt0i75TZBG.?%gcaAױ4j+JfSI$&q;+dqb\vT2 vuD_E{ߍE0z!6kұ1Kg/PK WUS==A org/racob/com/SafeArray.class}V |Wlb6hHK5RɆCS6 ,KXHv*jIkQUiՠj]^xU]K̼73wGy8V}g!,_B DOAÿx7 x*Nt'Y XHhp/v, X_eK-xۖl`[2z̕cÙBjx$Mtjtcoڥm٢|aJ;djkfM\E&m Y`%,"31"I \VX%蟨G- H[Th*7ґ,UlfyN15FNSE#pVےɶ.YJwOf}|.s*ox{&]"NB~+ͤry NTLYcR<w'(lY͚zGRYgE\8FFOr[PAH9fnP KBaTPB#ɋA]蠦am٦(ן4 :BRf2 jк\ŔSZńVCRsحn%v-TZJdTUTi wh|w\}Mxp\M͐Jsj*a6KzpO3zգ6ph= vqř95 ͩЭHITI }uaժp.HTW\ܕ8Vn ;&iZXk’g&Π-G-kn+ 9L3|!c&-mZ)_+e Lr0T(:iH~ڈNfR[@)6bt9.!`ѭ767EF1<sbLB*%CÈ; U/jS<3Az_=gNQgI"&b҉5z$G>kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK WUS=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK WUS= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK US=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK WUS=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK US=org/racob/test/PK US=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK US=org/racob/test/errors/PK US=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK US=org/racob/test/events/PK US=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK US=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK US=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK US=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK US=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK US=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK US=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK US=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK US=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK US=org/racob/test/excel/PK US=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK US=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK US=org/racob/test/powerpoint/PK US= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK US=org/racob/test/safearray/PK US=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK US=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK US=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK US=org/racob/test/vbscript/PK US=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK US=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK US=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK US=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK US=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK US=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK US=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK US=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK US=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK US=org/racob/test/windowsmedia/PK US=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK US= AMETA-INF/PK US=@D+META-INF/MANIFEST.MFPK US=bw `META-INF/JacobVersion.propertiesPK WUS=Aorg/PK US= A7org/racob/PK WUS=A_org/racob/activeX/PK WUS=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK WUS=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK WUS=?,. org/racob/activeX/ActiveXInvocationProxy.classPK US=Aorg/racob/com/PK US=I /org/racob/com/ActiveXComponentFactoryTest.classPK WUS=8n_org/racob/com/Automation.classPK WUS=[K org/racob/com/ComException.classPK WUS=..$"org/racob/com/ComFailException.classPK WUS=#+y0%org/racob/com/ComThread.classPK WUS=ך[Pw)org/racob/com/Currency.classPK WUS=7X!-org/racob/com/DateUtilities.classPK US=:+s%0org/racob/com/DateUtilitiesTest.classPK WUS=spm@bH4org/racob/com/Dispatch.classPK WUS=g{ "Forg/racob/com/DispatchEvents.classPK WUS=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK US=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK WUS=+vK!Rorg/racob/com/DispatchProxy.classPK US=&t Torg/racob/com/DispatchTest.classPK US=*-Uorg/racob/com/DispatchValidDispatchTest.classPK WUS=a5!(Yorg/racob/com/Documentation.classPK WUS=ZZh([org/racob/com/EnumVariant.classPK WUS=қ%y Y^org/racob/com/FuncDesc.classPK WUS=borg/racob/com/IUnknown.classPK WUS=<. #forg/racob/com/InvocationProxy.classPK WUS=ʼn8 .3jorg/racob/com/InvocationProxyAllVariants.classPK US=C0Lporg/racob/com/JacobDeadlockTest$TestThread.classPK US=G%`torg/racob/com/JacobDeadlockTest.classPK WUS=o\"sxorg/racob/com/JacobException.classPK US=SW#zorg/racob/com/JacobObjectTest.classPK WUS= w$8|org/racob/com/JacobReleaseInfo.classPK WUS=@|s !org/racob/com/LibraryLoader.classPK US=Bx%org/racob/com/LibraryLoaderTest.classPK WUS=Ldhorg/racob/com/MainSTA.classPK WUS=EF5+eorg/racob/com/NotImplementedException.classPK WUS=5h.porg/racob/com/Parameter.classPK WUS=OR[org/racob/com/Pointer.classPK WUS=zM(org/racob/com/PointerWeakReference.classPK WUS=ϦF|qborg/racob/com/ROT$1.classPK WUS= org/racob/com/ROT$2.classPK WUS="m* Иorg/racob/com/ROT.classPK US=Q5 +/org/racob/com/ROT2Test$ROT2TestThread.classPK US=d45org/racob/com/ROT2Test.classPK US=` +org/racob/com/ROT3Test$ROT3TestThread.classPK US=33org/racob/com/ROT3Test.classPK US=L[ org/racob/com/ROTTest.classPK WUS=&<'4org/racob/com/STA.classPK WUS==A org/racob/com/SafeArray.classPK WUS=X#8 org/racob/com/TypeInfo.classPK WUS=|QHorg/racob/com/TypeLib.classPK WUS= Eeorg/racob/com/VarDesc.classPK WUS=#H*3@org/racob/com/Variant.classPK US=͉\#org/racob/com/VariantDateTest.classPK US=5org/racob/com/VariantTest$VariantInitTestThread.classPK US=g(Norg/racob/com/VariantTest.classPK WUS=r  $org/racob/com/VariantUtilities.classPK US= DX (org/racob/com/VariantUtilitiesTest.classPK WUS=GH3#Forg/racob/com/VariantViaEvent.classPK WUS=qQ]"(Worg/racob/com/WrongThreadException.classPK US=Aorg/racob/test/PK US=$(!'org/racob/test/BaseTestCase.classPK US=A>'org/racob/test/errors/PK US=3a9,r'org/racob/test/errors/UnicodeErrorTest.classPK US=A+org/racob/test/events/PK US=D6Q+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK US=RM<*-.org/racob/test/events/ExcelEventTest.classPK US=vFQ",7org/racob/test/events/IETest.classPK US=D>֙G;org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK US=0 u 3Borg/racob/test/events/IETestActiveProxyThread.classPK US=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK US=u^ 1^Norg/racob/test/events/IETestThread$IEEvents.classPK US=-(Sorg/racob/test/events/IETestThread.classPK US=J>i4[org/racob/test/events/WordEventTest$WordEvents.classPK US=~ )M^org/racob/test/events/WordEventTest.classPK US=Acorg/racob/test/excel/PK US=fHg 4corg/racob/test/excel/ControllerTest$Controller.classPK US=mG)oorg/racob/test/excel/ControllerTest.classPK US=Arorg/racob/test/powerpoint/PK US= i- Csorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK US=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK US=A~org/racob/test/safearray/PK US=Հ+I$1~org/racob/test/safearray/SafeArrayBasicTest.classPK US= K .0@org/racob/test/safearray/SafeArrayContents.classPK US=وv4Iorg/racob/test/safearray/SafeArrayDispatchTest.classPK US=E} ,org/racob/test/safearray/SafeArrayLeak.classPK US=f !3\org/racob/test/safearray/SafeArrayReleaseTest.classPK US=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK US=Aeorg/racob/test/vbscript/PK US=ø{E (org/racob/test/vbscript/ScriptTest.classPK US=C 7&org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK US=@> )!org/racob/test/vbscript/ScriptTest2.classPK US=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK US=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK US=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK US=ˆSk)<org/racob/test/vbscript/ScriptTest3.classPK US=(YH$org/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK US=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK US=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK US=Ж1 org/racob/test/vbscript/ScriptTestErrEvents.classPK US=Aorg/racob/test/windowsmedia/PK US=-m"*+org/racob/test/windowsmedia/WMPlayer.classPKjjV"PK US=||win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoader loadLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK US=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK US=ɴА9А9win32ole/win32ole.jarPK SS= META-INF/PK SS==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK hSS=jruby-win32ole/PK hSS=org/PK hSS= org/jruby/PK hSS=org/jruby/ext/PK hSS=org/jruby/ext/win32ole/PK SS= win32ole/PK hSS=P|jruby-win32ole.rbrequire 'java' # Set location so the loader can find the native dll it needs arch = ENV_JAVA['sun.arch.data.model'] == '32' ? 'x86' : 'x64' java.lang.System.set_property 'racob.dll.path', File.dirname(__FILE__) + "/racob-#{arch}.dll" require 'racob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import org.racob.com.Variant java_import org.racob.com.Automation java_import org.racob.com.ComFailException java_import org.racob.com.ComThread java_import org.racob.com.Dispatch java_import org.racob.com.DispatchEvents java_import org.racob.com.EnumVariant java_import org.racob.com.FuncDesc java_import org.racob.com.TypeInfo java_import org.racob.com.TypeLib java_import org.racob.com.VarDesc java_import org.racob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK hSS=??jruby-win32ole/version.rbmodule JRuby module WIN32OLE VERSION = "0.8.0" end end PK hSS=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK hSS=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK hSS=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK hSS=`9  racob.jarPK ZR= META-INF/PK YR=ѷMETA-INF/MANIFEST.MFPAj0 =VZT7PH 4% [`KFi;3N9c>g%R;$fl&7\PRzTV\}J:]aP]Cb2}_'%2 A-Jk72QBɛ06gUs}vSAiq^B(rny&hPɏv{|ゥß^E\CS΂ذFVHA*/_PK ZR=ِy META-INF/JacobVersion.propertiesSQ0PO.Q0204P04222T5050ROMQN-P04U04225Rpv *K-*ϳ534J*IKI,I5Z 57hp d̒Ԣf3c^PK ȉR=org/PK ɉR= org/racob/PK AR=org/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK AR=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK AR=org/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK AR=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK ZR=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK ZR=3org/racob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++ٌmVNZE.iEȴ0Ҟ %"# F&.Ӻ ~#A0BbMu { L;}9Ɵd@>5k|)uT C5>;iED7 (4ʔӥ1QFE h6"@n4 NjfJZCܹ;rxDyN|O}g ; G㗈&@ 2D#4륅)(H/PK ZR=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK ZR=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK AR=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK AR=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK AR=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK ZR=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK ZR=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK AR=8uorg/racob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;;?}`'`xc_-XƊ:HeU)o"Xc Xԑ+q#MN5(]嵧>t? ?kEï Z6,W: C)]Lm:VKS2 ChKaJ1+5I9a P Fa%ڮud/, J)Xfh=fMXzeWY<[ҔLQ^J!m)yJ(DDP)Bju P+rY40to"wD];mU^[OO$Z(7Y /L]qrr+3X߶IL:LJ7, R#|q) 9<5a楣G9`2](Pa{(9T=wT {Ȅ ȴc /8~u=9*seۭZ'1gM'eWiv [nةM*K8at4GݹH=V鮋l5h T(E9]bkZ]o%T Mf7$a\1"Z sKEwrr32FIyLpHn3 CBɛ#y 8"&&h;UBu}YOɿQǛ 7ҽըíNB#c{'@5"/=d9;eAO;u x3OX$}UīSt\{(5Q"]/e,# z5 0gK2{4!*Fn{aGN1ZDN1Q:$u4VIPK ZR=<. #org/racob/com/InvocationProxy.class}T[SPN)A"R(/\metIC=N"WȌrܓNgNnwowWQЫ>TЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK ZR=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK AR=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK AR=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK AR=ᚹq !org/racob/com/LibraryLoader.classWwg~fwL6C&)41׍B %d7ABR-q;ILfY^[kҋ@ښZ˦(_=?@稧|3d"d}{-+vJqQ(tLDBZ(&1%>0qB|fdX-Q0}pbl8XO)(oo*oGw/= Aߋ!<*xL /3 Bœ *xJlVX %=(AKOꝖnOuxiO}A^xV(95?SwwPB& ߵsgPwW1m+!2*!FU´',CxtkTwMAoHؖpܩNWO9)g3aN{:ie, ڌdJ5HK3~;;kg:6IpG43f툑qnOsшR-`t궢Gzv2Ю* iU?9TqYh,`;~_RF5]orث% -a˚>\k6ZwȊ3&v2$l-"^yI:Z>1 7Kﱪi=t\2f [am{Qca=fo@ߨ_Μz[ֈz+CI9v&reܜaՎbaa XoKo9>ڐ6&SץaYxx/(X R+tİ =c ؓw }5܌߻헛̸/[žpNn/OL;mODa+킄.R!TL]G'":FzwHsEtHrw9\%Z/A|wC0_5>|k9/=0A/#t‰jDrؐGP[s(O/!*iBu,acc HRcS]Է^EmV!تUD*/nѶP?V~rck{-4QU:3Zvb+d~ݪ>A@M/վ6"c\4 {Q}G_dbLs/*XQq;,ykt;mx}(ex}x 43s|Oe^#.u +{|87q R:>|Z! dT~ Ӌѳ>b8Y,N IwR~HTG!|p t qH S0vT~2,㈌GQ:H]נqPCx= Pw/Ύ|og!2~4ik= D%c`30&/{+滵Ojy jlsYlڃmxQD[q3O$E_0Đ1f_yO/b~QDq+NnWqV!| Up!~DPK AR=nis%org/racob/com/LibraryLoaderTest.classT][D~$ph嫩u)+PZjإEQg N~^^}x&Zx\̙9900VQfWr$gj20 Y/ 㞆9uc^ǂcI2ycYc _3u}7М)1d`]_e!y#Mt9Uf2\S '/nYrydB"fF$Su#D%!C7}Hzk-J_X%LRjBVm!Q>ǮԮnr_K5ЊZwIC `g4&PK ZR=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK AR=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK ZR=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK ZR=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK ZR=wN+ org/racob/com/ROT.classW |Wn&% r`h+l͐vv7JnAm=GxQWj=]&ԟJ~{{{s= `䙁-x8!f(kdܦ"'.; q'^+fSp_/ o,ěBoeܣ‡2N Pq/Nw=^r ӂ~Cbχ|D38`Pi TT㈊+qVI)VU9pQ#*qBb=;>Ê5Zfq[_ V1õf!KCBUnq䭶6tuƢf'913\WpoW6.`;G]5A60VVШ[m%ͱ/!A;n$HԆ@PCsGSegCz*oho>\MZG¾1d,7D;^>*lVԙ @oY~`w(2}]ӮwIGSSļXgNE!#9` C rdqڼ`*L? _]m*5CtS}:l8pj+[FXF֣QvРm]4dhSWœI&\} @csY7}m*m[x*과N-v7LyN3#qj^Csry>>1/r]!"nI2ճ0s=Q싄&O<"v8, ܁lv?WB'Ņ<ű# 6efuF㐸F518i=yeI)Xp#0غ{9-vSyKe+ì*: BEa,zX˨/T%8q\D:.bA5@uey"-Jȸnm(ywfV$5&#Nz]nXɟ:ݐgiKdB,E yiJ2q I$eE*Nq00k8[;$2N9$ytjWxip͞aBoiJAtiK}U4S!, *hu Ũl'pֱ6jq ;ⷑlbM3E60=2/+E_əDYxgbxG;7bn˽]DoaG# ³PK AR=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK AR=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK AR=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK AR=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK ZR=Ձ*org/racob/com/STA.classeR]OA=.vݖZX 1YiÃn8mM)_l|w&{;sس`cܵU)sOg++aaMlpҽS)xUR~=cHOJ Ӯ톐u(2NF2̹l9{a¶S?'B0dk=}kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK ZR=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK ZR= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK AR=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK ZR=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK AR=org/racob/test/PK AR=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK AR=org/racob/test/errors/PK AR=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK AR=org/racob/test/events/PK AR=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK AR=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK AR=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK AR=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK AR=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK AR=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK AR=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK AR=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK AR=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK AR=org/racob/test/excel/PK AR=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK AR=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK AR=org/racob/test/powerpoint/PK AR= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK AR=org/racob/test/safearray/PK AR=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK AR=org/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK AR=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK AR=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK AR=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK AR=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK AR=org/racob/test/windowsmedia/PK AR=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK ZR= AMETA-INF/PK YR=ѷ+META-INF/MANIFEST.MFPK ZR=ِy `META-INF/JacobVersion.propertiesPK ȉR=Aorg/PK ɉR= A9org/racob/PK AR=Aaorg/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK AR=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK AR=?,.org/racob/activeX/ActiveXInvocationProxy.classPK AR=Aorg/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classPK AR=8n_org/racob/com/Automation.classPK ZR=[K org/racob/com/ComException.classPK AR=..$"org/racob/com/ComFailException.classPK ZR=32%org/racob/com/ComThread.classPK ZR=ך[Pw)org/racob/com/Currency.classPK AR=7X!-org/racob/com/DateUtilities.classPK AR=:+s%0org/racob/com/DateUtilitiesTest.classPK ZR=spm@bH4org/racob/com/Dispatch.classPK ZR=g{ "Forg/racob/com/DispatchEvents.classPK AR=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK AR=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK AR=+vK!Rorg/racob/com/DispatchProxy.classPK AR=&t Torg/racob/com/DispatchTest.classPK AR=*-Uorg/racob/com/DispatchValidDispatchTest.classPK AR=a5!,Yorg/racob/com/Documentation.classPK ZR=ZZh,[org/racob/com/EnumVariant.classPK ZR=қ%y ]^org/racob/com/FuncDesc.classPK AR=8uborg/racob/com/IUnknown.classPK ZR=<. #forg/racob/com/InvocationProxy.classPK ZR=ʼn8 .:jorg/racob/com/InvocationProxyAllVariants.classPK AR=C0Sporg/racob/com/JacobDeadlockTest$TestThread.classPK AR=G%gtorg/racob/com/JacobDeadlockTest.classPK AR=o\"zxorg/racob/com/JacobException.classPK AR=SW#zorg/racob/com/JacobObjectTest.classPK AR= w$?|org/racob/com/JacobReleaseInfo.classPK AR=ᚹq !org/racob/com/LibraryLoader.classPK AR=nis%Vorg/racob/com/LibraryLoaderTest.classPK ZR=Ldorg/racob/com/MainSTA.classPK AR=EF5+org/racob/com/NotImplementedException.classPK ZR=5h.p)org/racob/com/Parameter.classPK ZR=OR[ԑorg/racob/com/Pointer.classPK ZR=zM(ٓorg/racob/com/PointerWeakReference.classPK ZR=ϦF|qorg/racob/com/ROT$1.classPK ZR=Porg/racob/com/ROT$2.classPK ZR=wN+ org/racob/com/ROT.classPK AR=Q5 +vorg/racob/com/ROT2Test$ROT2TestThread.classPK AR=d45org/racob/com/ROT2Test.classPK AR=` +corg/racob/com/ROT3Test$ROT3TestThread.classPK AR=3zorg/racob/com/ROT3Test.classPK AR=L[ org/racob/com/ROTTest.classPK ZR=Ձ*{org/racob/com/STA.classPK ZR==A ڽorg/racob/com/SafeArray.classPK ZR=X#8Vorg/racob/com/TypeInfo.classPK ZR=|QH]org/racob/com/TypeLib.classPK ZR= EeQorg/racob/com/VarDesc.classPK AR=#H*3org/racob/com/Variant.classPK AR=͉\#org/racob/com/VariantDateTest.classPK AR=51org/racob/com/VariantTest$VariantInitTestThread.classPK AR=g(org/racob/com/VariantTest.classPK ZR=r  $org/racob/com/VariantUtilities.classPK AR= DX (org/racob/com/VariantUtilitiesTest.classPK ZR=GH3#org/racob/com/VariantViaEvent.classPK AR=qQ]"(org/racob/com/WrongThreadException.classPK AR=ADorg/racob/test/PK AR=$(!qorg/racob/test/BaseTestCase.classPK AR=A'org/racob/test/errors/PK AR=3a9,'org/racob/test/errors/UnicodeErrorTest.classPK AR=Ag+org/racob/test/events/PK AR=D6+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK AR=RM<*w.org/racob/test/events/ExcelEventTest.classPK AR=vFQ"v7org/racob/test/events/IETest.classPK AR=D>֙G<org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK AR=0 u 3Corg/racob/test/events/IETestActiveProxyThread.classPK AR=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK AR=u^ 1Norg/racob/test/events/IETestThread$IEEvents.classPK AR=-(Sorg/racob/test/events/IETestThread.classPK AR=J>i4\org/racob/test/events/WordEventTest$WordEvents.classPK AR=~ )^org/racob/test/events/WordEventTest.classPK AR=Acorg/racob/test/excel/PK AR=fHg 4dorg/racob/test/excel/ControllerTest$Controller.classPK AR=mG)Iporg/racob/test/excel/ControllerTest.classPK AR=Asorg/racob/test/powerpoint/PK AR= i- CKsorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK AR=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK AR=A~org/racob/test/safearray/PK AR=Հ+I$1)org/racob/test/safearray/SafeArrayBasicTest.classPK AR= K .0org/racob/test/safearray/SafeArrayContents.classPK AR=وv4org/racob/test/safearray/SafeArrayDispatchTest.classPK AR=E} ,ߟorg/racob/test/safearray/SafeArrayLeak.classPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK AR=Aorg/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classPK AR=C 7porg/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK AR=@> )korg/racob/test/vbscript/ScriptTest2.classPK AR=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK AR=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classPK AR=(YHnorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK AR=Ж1Vorg/racob/test/vbscript/ScriptTestErrEvents.classPK AR=A;org/racob/test/windowsmedia/PK AR=-m"*uorg/racob/test/windowsmedia/WMPlayer.classPKjjV"*PK hSS=s6win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK hSS=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK SS=J66win32ole/win32ole.jarPK iSS= META-INF/PK hSS==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK hSS=jruby-win32ole/PK hSS=org/PK hSS= org/jruby/PK hSS=org/jruby/ext/PK hSS=org/jruby/ext/win32ole/PK hSS= win32ole/PK hSS=P|jruby-win32ole.rbrequire 'java' # Set location so the loader can find the native dll it needs arch = ENV_JAVA['sun.arch.data.model'] == '32' ? 'x86' : 'x64' java.lang.System.set_property 'racob.dll.path', File.dirname(__FILE__) + "/racob-#{arch}.dll" require 'racob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import org.racob.com.Variant java_import org.racob.com.Automation java_import org.racob.com.ComFailException java_import org.racob.com.ComThread java_import org.racob.com.Dispatch java_import org.racob.com.DispatchEvents java_import org.racob.com.EnumVariant java_import org.racob.com.FuncDesc java_import org.racob.com.TypeInfo java_import org.racob.com.TypeLib java_import org.racob.com.VarDesc java_import org.racob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK hSS=??jruby-win32ole/version.rbmodule JRuby module WIN32OLE VERSION = "0.8.0" end end PK hSS=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK hSS=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK hSS=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK hSS=`9  racob.jarPK ZR= META-INF/PK YR=ѷMETA-INF/MANIFEST.MFPAj0 =VZT7PH 4% [`KFi;3N9c>g%R;$fl&7\PRzTV\}J:]aP]Cb2}_'%2 A-Jk72QBɛ06gUs}vSAiq^B(rny&hPɏv{|ゥß^E\CS΂ذFVHA*/_PK ZR=ِy META-INF/JacobVersion.propertiesSQ0PO.Q0204P04222T5050ROMQN-P04U04225Rpv *K-*ϳ534J*IKI,I5Z 57hp d̒Ԣf3c^PK ȉR=org/PK ɉR= org/racob/PK AR=org/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK AR=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK AR=org/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK AR=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK ZR=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK ZR=3org/racob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++ٌmVNZE.iEȴ0Ҟ %"# F&.Ӻ ~#A0BbMu { L;}9Ɵd@>5k|)uT C5>;iED7 (4ʔӥ1QFE h6"@n4 NjfJZCܹ;rxDyN|O}g ; G㗈&@ 2D#4륅)(H/PK ZR=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK ZR=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK AR=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK AR=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK AR=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK ZR=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK ZR=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK AR=8uorg/racob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;;?}`'`xc_-XƊ:HeU)o"Xc Xԑ+q#MN5(]嵧>t? ?kEï Z6,W: C)]Lm:VKS2 ChKaJ1+5I9a P Fa%ڮud/, J)Xfh=fMXzeWY<[ҔLQ^J!m)yJ(DDP)Bju P+rY40to"wD];mU^[OO$Z(7Y /L]qrr+3X߶IL:LJ7, R#|q) 9<5a楣G9`2](Pa{(9T=wT {Ȅ ȴc /8~u=9*seۭZ'1gM'eWiv [nةM*K8at4GݹH=V鮋l5h T(E9]bkZ]o%T Mf7$a\1"Z sKEwrr32FIyLpHn3 CBɛ#y 8"&&h;UBu}YOɿQǛ 7ҽըíNB#c{'@5"/=d9;eAO;u x3OX$}UīSt\{(5Q"]/e,# z5 0gK2{4!*Fn{aGN1ZDN1Q:$u4VIPK ZR=<. #org/racob/com/InvocationProxy.class}T[SPN)A"R(/\metIC=N"WȌrܓNgNnwowWQЫ>TЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK ZR=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK AR=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK AR=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK AR=ᚹq !org/racob/com/LibraryLoader.classWwg~fwL6C&)41׍B %d7ABR-q;ILfY^[kҋ@ښZ˦(_=?@稧|3d"d}{-+vJqQ(tLDBZ(&1%>0qB|fdX-Q0}pbl8XO)(oo*oGw/= Aߋ!<*xL /3 Bœ *xJlVX %=(AKOꝖnOuxiO}A^xV(95?SwwPB& ߵsgPwW1m+!2*!FU´',CxtkTwMAoHؖpܩNWO9)g3aN{:ie, ڌdJ5HK3~;;kg:6IpG43f툑qnOsшR-`t궢Gzv2Ю* iU?9TqYh,`;~_RF5]orث% -a˚>\k6ZwȊ3&v2$l-"^yI:Z>1 7Kﱪi=t\2f [am{Qca=fo@ߨ_Μz[ֈz+CI9v&reܜaՎbaa XoKo9>ڐ6&SץaYxx/(X R+tİ =c ؓw }5܌߻헛̸/[žpNn/OL;mODa+킄.R!TL]G'":FzwHsEtHrw9\%Z/A|wC0_5>|k9/=0A/#t‰jDrؐGP[s(O/!*iBu,acc HRcS]Է^EmV!تUD*/nѶP?V~rck{-4QU:3Zvb+d~ݪ>A@M/վ6"c\4 {Q}G_dbLs/*XQq;,ykt;mx}(ex}x 43s|Oe^#.u +{|87q R:>|Z! dT~ Ӌѳ>b8Y,N IwR~HTG!|p t qH S0vT~2,㈌GQ:H]נqPCx= Pw/Ύ|og!2~4ik= D%c`30&/{+滵Ojy jlsYlڃmxQD[q3O$E_0Đ1f_yO/b~QDq+NnWqV!| Up!~DPK AR=nis%org/racob/com/LibraryLoaderTest.classT][D~$ph嫩u)+PZjإEQg N~^^}x&Zx\̙9900VQfWr$gj20 Y/ 㞆9uc^ǂcI2ycYc _3u}7М)1d`]_e!y#Mt9Uf2\S '/nYrydB"fF$Su#D%!C7}Hzk-J_X%LRjBVm!Q>ǮԮnr_K5ЊZwIC `g4&PK ZR=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK AR=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK ZR=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK ZR=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK ZR=wN+ org/racob/com/ROT.classW |Wn&% r`h+l͐vv7JnAm=GxQWj=]&ԟJ~{{{s= `䙁-x8!f(kdܦ"'.; q'^+fSp_/ o,ěBoeܣ‡2N Pq/Nw=^r ӂ~Cbχ|D38`Pi TT㈊+qVI)VU9pQ#*qBb=;>Ê5Zfq[_ V1õf!KCBUnq䭶6tuƢf'913\WpoW6.`;G]5A60VVШ[m%ͱ/!A;n$HԆ@PCsGSegCz*oho>\MZG¾1d,7D;^>*lVԙ @oY~`w(2}]ӮwIGSSļXgNE!#9` C rdqڼ`*L? _]m*5CtS}:l8pj+[FXF֣QvРm]4dhSWœI&\} @csY7}m*m[x*과N-v7LyN3#qj^Csry>>1/r]!"nI2ճ0s=Q싄&O<"v8, ܁lv?WB'Ņ<ű# 6efuF㐸F518i=yeI)Xp#0غ{9-vSyKe+ì*: BEa,zX˨/T%8q\D:.bA5@uey"-Jȸnm(ywfV$5&#Nz]nXɟ:ݐgiKdB,E yiJ2q I$eE*Nq00k8[;$2N9$ytjWxip͞aBoiJAtiK}U4S!, *hu Ũl'pֱ6jq ;ⷑlbM3E60=2/+E_əDYxgbxG;7bn˽]DoaG# ³PK AR=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK AR=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK AR=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK AR=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK ZR=Ձ*org/racob/com/STA.classeR]OA=.vݖZX 1YiÃn8mM)_l|w&{;sس`cܵU)sOg++aaMlpҽS)xUR~=cHOJ Ӯ톐u(2NF2̹l9{a¶S?'B0dk=}kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK ZR=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK ZR= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK AR=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK ZR=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK AR=org/racob/test/PK AR=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK AR=org/racob/test/errors/PK AR=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK AR=org/racob/test/events/PK AR=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK AR=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK AR=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK AR=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK AR=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK AR=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK AR=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK AR=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK AR=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK AR=org/racob/test/excel/PK AR=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK AR=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK AR=org/racob/test/powerpoint/PK AR= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK AR=org/racob/test/safearray/PK AR=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK AR=org/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK AR=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK AR=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK AR=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK AR=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK AR=org/racob/test/windowsmedia/PK AR=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK ZR= AMETA-INF/PK YR=ѷ+META-INF/MANIFEST.MFPK ZR=ِy `META-INF/JacobVersion.propertiesPK ȉR=Aorg/PK ɉR= A9org/racob/PK AR=Aaorg/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK AR=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK AR=?,.org/racob/activeX/ActiveXInvocationProxy.classPK AR=Aorg/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classPK AR=8n_org/racob/com/Automation.classPK ZR=[K org/racob/com/ComException.classPK AR=..$"org/racob/com/ComFailException.classPK ZR=32%org/racob/com/ComThread.classPK ZR=ך[Pw)org/racob/com/Currency.classPK AR=7X!-org/racob/com/DateUtilities.classPK AR=:+s%0org/racob/com/DateUtilitiesTest.classPK ZR=spm@bH4org/racob/com/Dispatch.classPK ZR=g{ "Forg/racob/com/DispatchEvents.classPK AR=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK AR=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK AR=+vK!Rorg/racob/com/DispatchProxy.classPK AR=&t Torg/racob/com/DispatchTest.classPK AR=*-Uorg/racob/com/DispatchValidDispatchTest.classPK AR=a5!,Yorg/racob/com/Documentation.classPK ZR=ZZh,[org/racob/com/EnumVariant.classPK ZR=қ%y ]^org/racob/com/FuncDesc.classPK AR=8uborg/racob/com/IUnknown.classPK ZR=<. #forg/racob/com/InvocationProxy.classPK ZR=ʼn8 .:jorg/racob/com/InvocationProxyAllVariants.classPK AR=C0Sporg/racob/com/JacobDeadlockTest$TestThread.classPK AR=G%gtorg/racob/com/JacobDeadlockTest.classPK AR=o\"zxorg/racob/com/JacobException.classPK AR=SW#zorg/racob/com/JacobObjectTest.classPK AR= w$?|org/racob/com/JacobReleaseInfo.classPK AR=ᚹq !org/racob/com/LibraryLoader.classPK AR=nis%Vorg/racob/com/LibraryLoaderTest.classPK ZR=Ldorg/racob/com/MainSTA.classPK AR=EF5+org/racob/com/NotImplementedException.classPK ZR=5h.p)org/racob/com/Parameter.classPK ZR=OR[ԑorg/racob/com/Pointer.classPK ZR=zM(ٓorg/racob/com/PointerWeakReference.classPK ZR=ϦF|qorg/racob/com/ROT$1.classPK ZR=Porg/racob/com/ROT$2.classPK ZR=wN+ org/racob/com/ROT.classPK AR=Q5 +vorg/racob/com/ROT2Test$ROT2TestThread.classPK AR=d45org/racob/com/ROT2Test.classPK AR=` +corg/racob/com/ROT3Test$ROT3TestThread.classPK AR=3zorg/racob/com/ROT3Test.classPK AR=L[ org/racob/com/ROTTest.classPK ZR=Ձ*{org/racob/com/STA.classPK ZR==A ڽorg/racob/com/SafeArray.classPK ZR=X#8Vorg/racob/com/TypeInfo.classPK ZR=|QH]org/racob/com/TypeLib.classPK ZR= EeQorg/racob/com/VarDesc.classPK AR=#H*3org/racob/com/Variant.classPK AR=͉\#org/racob/com/VariantDateTest.classPK AR=51org/racob/com/VariantTest$VariantInitTestThread.classPK AR=g(org/racob/com/VariantTest.classPK ZR=r  $org/racob/com/VariantUtilities.classPK AR= DX (org/racob/com/VariantUtilitiesTest.classPK ZR=GH3#org/racob/com/VariantViaEvent.classPK AR=qQ]"(org/racob/com/WrongThreadException.classPK AR=ADorg/racob/test/PK AR=$(!qorg/racob/test/BaseTestCase.classPK AR=A'org/racob/test/errors/PK AR=3a9,'org/racob/test/errors/UnicodeErrorTest.classPK AR=Ag+org/racob/test/events/PK AR=D6+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK AR=RM<*w.org/racob/test/events/ExcelEventTest.classPK AR=vFQ"v7org/racob/test/events/IETest.classPK AR=D>֙G<org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK AR=0 u 3Corg/racob/test/events/IETestActiveProxyThread.classPK AR=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK AR=u^ 1Norg/racob/test/events/IETestThread$IEEvents.classPK AR=-(Sorg/racob/test/events/IETestThread.classPK AR=J>i4\org/racob/test/events/WordEventTest$WordEvents.classPK AR=~ )^org/racob/test/events/WordEventTest.classPK AR=Acorg/racob/test/excel/PK AR=fHg 4dorg/racob/test/excel/ControllerTest$Controller.classPK AR=mG)Iporg/racob/test/excel/ControllerTest.classPK AR=Asorg/racob/test/powerpoint/PK AR= i- CKsorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK AR=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK AR=A~org/racob/test/safearray/PK AR=Հ+I$1)org/racob/test/safearray/SafeArrayBasicTest.classPK AR= K .0org/racob/test/safearray/SafeArrayContents.classPK AR=وv4org/racob/test/safearray/SafeArrayDispatchTest.classPK AR=E} ,ߟorg/racob/test/safearray/SafeArrayLeak.classPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK AR=Aorg/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classPK AR=C 7porg/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK AR=@> )korg/racob/test/vbscript/ScriptTest2.classPK AR=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK AR=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classPK AR=(YHnorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK AR=Ж1Vorg/racob/test/vbscript/ScriptTestErrEvents.classPK AR=A;org/racob/test/windowsmedia/PK AR=-m"*uorg/racob/test/windowsmedia/WMPlayer.classPKjjV"*PK hSS=s6win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK hSS=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK hSS=D"2424win32ole/win32ole.jarPK RS= META-INF/PK RS==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK 1R=jruby-win32ole/PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK OR=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK OR=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK OR=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK RS=`9  racob.jarPK ZR= META-INF/PK YR=ѷMETA-INF/MANIFEST.MFPAj0 =VZT7PH 4% [`KFi;3N9c>g%R;$fl&7\PRzTV\}J:]aP]Cb2}_'%2 A-Jk72QBɛ06gUs}vSAiq^B(rny&hPɏv{|ゥß^E\CS΂ذFVHA*/_PK ZR=ِy META-INF/JacobVersion.propertiesSQ0PO.Q0204P04222T5050ROMQN-P04U04225Rpv *K-*ϳ534J*IKI,I5Z 57hp d̒Ԣf3c^PK ȉR=org/PK ɉR= org/racob/PK AR=org/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK AR=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK AR=org/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK AR=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK ZR=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK ZR=3org/racob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++ٌmVNZE.iEȴ0Ҟ %"# F&.Ӻ ~#A0BbMu { L;}9Ɵd@>5k|)uT C5>;iED7 (4ʔӥ1QFE h6"@n4 NjfJZCܹ;rxDyN|O}g ; G㗈&@ 2D#4륅)(H/PK ZR=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK ZR=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK AR=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK AR=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK AR=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK ZR=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK ZR=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK AR=8uorg/racob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;;?}`'`xc_-XƊ:HeU)o"Xc Xԑ+q#MN5(]嵧>t? ?kEï Z6,W: C)]Lm:VKS2 ChKaJ1+5I9a P Fa%ڮud/, J)Xfh=fMXzeWY<[ҔLQ^J!m)yJ(DDP)Bju P+rY40to"wD];mU^[OO$Z(7Y /L]qrr+3X߶IL:LJ7, R#|q) 9<5a楣G9`2](Pa{(9T=wT {Ȅ ȴc /8~u=9*seۭZ'1gM'eWiv [nةM*K8at4GݹH=V鮋l5h T(E9]bkZ]o%T Mf7$a\1"Z sKEwrr32FIyLpHn3 CBɛ#y 8"&&h;UBu}YOɿQǛ 7ҽըíNB#c{'@5"/=d9;eAO;u x3OX$}UīSt\{(5Q"]/e,# z5 0gK2{4!*Fn{aGN1ZDN1Q:$u4VIPK ZR=<. #org/racob/com/InvocationProxy.class}T[SPN)A"R(/\metIC=N"WȌrܓNgNnwowWQЫ>TЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK ZR=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK AR=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK AR=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK AR=ᚹq !org/racob/com/LibraryLoader.classWwg~fwL6C&)41׍B %d7ABR-q;ILfY^[kҋ@ښZ˦(_=?@稧|3d"d}{-+vJqQ(tLDBZ(&1%>0qB|fdX-Q0}pbl8XO)(oo*oGw/= Aߋ!<*xL /3 Bœ *xJlVX %=(AKOꝖnOuxiO}A^xV(95?SwwPB& ߵsgPwW1m+!2*!FU´',CxtkTwMAoHؖpܩNWO9)g3aN{:ie, ڌdJ5HK3~;;kg:6IpG43f툑qnOsшR-`t궢Gzv2Ю* iU?9TqYh,`;~_RF5]orث% -a˚>\k6ZwȊ3&v2$l-"^yI:Z>1 7Kﱪi=t\2f [am{Qca=fo@ߨ_Μz[ֈz+CI9v&reܜaՎbaa XoKo9>ڐ6&SץaYxx/(X R+tİ =c ؓw }5܌߻헛̸/[žpNn/OL;mODa+킄.R!TL]G'":FzwHsEtHrw9\%Z/A|wC0_5>|k9/=0A/#t‰jDrؐGP[s(O/!*iBu,acc HRcS]Է^EmV!تUD*/nѶP?V~rck{-4QU:3Zvb+d~ݪ>A@M/վ6"c\4 {Q}G_dbLs/*XQq;,ykt;mx}(ex}x 43s|Oe^#.u +{|87q R:>|Z! dT~ Ӌѳ>b8Y,N IwR~HTG!|p t qH S0vT~2,㈌GQ:H]נqPCx= Pw/Ύ|og!2~4ik= D%c`30&/{+滵Ojy jlsYlڃmxQD[q3O$E_0Đ1f_yO/b~QDq+NnWqV!| Up!~DPK AR=nis%org/racob/com/LibraryLoaderTest.classT][D~$ph嫩u)+PZjإEQg N~^^}x&Zx\̙9900VQfWr$gj20 Y/ 㞆9uc^ǂcI2ycYc _3u}7М)1d`]_e!y#Mt9Uf2\S '/nYrydB"fF$Su#D%!C7}Hzk-J_X%LRjBVm!Q>ǮԮnr_K5ЊZwIC `g4&PK ZR=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK AR=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK ZR=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK ZR=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK ZR=wN+ org/racob/com/ROT.classW |Wn&% r`h+l͐vv7JnAm=GxQWj=]&ԟJ~{{{s= `䙁-x8!f(kdܦ"'.; q'^+fSp_/ o,ěBoeܣ‡2N Pq/Nw=^r ӂ~Cbχ|D38`Pi TT㈊+qVI)VU9pQ#*qBb=;>Ê5Zfq[_ V1õf!KCBUnq䭶6tuƢf'913\WpoW6.`;G]5A60VVШ[m%ͱ/!A;n$HԆ@PCsGSegCz*oho>\MZG¾1d,7D;^>*lVԙ @oY~`w(2}]ӮwIGSSļXgNE!#9` C rdqڼ`*L? _]m*5CtS}:l8pj+[FXF֣QvРm]4dhSWœI&\} @csY7}m*m[x*과N-v7LyN3#qj^Csry>>1/r]!"nI2ճ0s=Q싄&O<"v8, ܁lv?WB'Ņ<ű# 6efuF㐸F518i=yeI)Xp#0غ{9-vSyKe+ì*: BEa,zX˨/T%8q\D:.bA5@uey"-Jȸnm(ywfV$5&#Nz]nXɟ:ݐgiKdB,E yiJ2q I$eE*Nq00k8[;$2N9$ytjWxip͞aBoiJAtiK}U4S!, *hu Ũl'pֱ6jq ;ⷑlbM3E60=2/+E_əDYxgbxG;7bn˽]DoaG# ³PK AR=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK AR=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK AR=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK AR=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK ZR=Ձ*org/racob/com/STA.classeR]OA=.vݖZX 1YiÃn8mM)_l|w&{;sس`cܵU)sOg++aaMlpҽS)xUR~=cHOJ Ӯ톐u(2NF2̹l9{a¶S?'B0dk=}kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK ZR=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK ZR= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK AR=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK ZR=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK AR=org/racob/test/PK AR=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK AR=org/racob/test/errors/PK AR=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK AR=org/racob/test/events/PK AR=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK AR=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK AR=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK AR=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK AR=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK AR=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK AR=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK AR=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK AR=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK AR=org/racob/test/excel/PK AR=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK AR=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK AR=org/racob/test/powerpoint/PK AR= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK AR=org/racob/test/safearray/PK AR=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK AR=org/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK AR=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK AR=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK AR=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK AR=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK AR=org/racob/test/windowsmedia/PK AR=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK ZR= AMETA-INF/PK YR=ѷ+META-INF/MANIFEST.MFPK ZR=ِy `META-INF/JacobVersion.propertiesPK ȉR=Aorg/PK ɉR= A9org/racob/PK AR=Aaorg/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK AR=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK AR=?,.org/racob/activeX/ActiveXInvocationProxy.classPK AR=Aorg/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classPK AR=8n_org/racob/com/Automation.classPK ZR=[K org/racob/com/ComException.classPK AR=..$"org/racob/com/ComFailException.classPK ZR=32%org/racob/com/ComThread.classPK ZR=ך[Pw)org/racob/com/Currency.classPK AR=7X!-org/racob/com/DateUtilities.classPK AR=:+s%0org/racob/com/DateUtilitiesTest.classPK ZR=spm@bH4org/racob/com/Dispatch.classPK ZR=g{ "Forg/racob/com/DispatchEvents.classPK AR=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK AR=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK AR=+vK!Rorg/racob/com/DispatchProxy.classPK AR=&t Torg/racob/com/DispatchTest.classPK AR=*-Uorg/racob/com/DispatchValidDispatchTest.classPK AR=a5!,Yorg/racob/com/Documentation.classPK ZR=ZZh,[org/racob/com/EnumVariant.classPK ZR=қ%y ]^org/racob/com/FuncDesc.classPK AR=8uborg/racob/com/IUnknown.classPK ZR=<. #forg/racob/com/InvocationProxy.classPK ZR=ʼn8 .:jorg/racob/com/InvocationProxyAllVariants.classPK AR=C0Sporg/racob/com/JacobDeadlockTest$TestThread.classPK AR=G%gtorg/racob/com/JacobDeadlockTest.classPK AR=o\"zxorg/racob/com/JacobException.classPK AR=SW#zorg/racob/com/JacobObjectTest.classPK AR= w$?|org/racob/com/JacobReleaseInfo.classPK AR=ᚹq !org/racob/com/LibraryLoader.classPK AR=nis%Vorg/racob/com/LibraryLoaderTest.classPK ZR=Ldorg/racob/com/MainSTA.classPK AR=EF5+org/racob/com/NotImplementedException.classPK ZR=5h.p)org/racob/com/Parameter.classPK ZR=OR[ԑorg/racob/com/Pointer.classPK ZR=zM(ٓorg/racob/com/PointerWeakReference.classPK ZR=ϦF|qorg/racob/com/ROT$1.classPK ZR=Porg/racob/com/ROT$2.classPK ZR=wN+ org/racob/com/ROT.classPK AR=Q5 +vorg/racob/com/ROT2Test$ROT2TestThread.classPK AR=d45org/racob/com/ROT2Test.classPK AR=` +corg/racob/com/ROT3Test$ROT3TestThread.classPK AR=3zorg/racob/com/ROT3Test.classPK AR=L[ org/racob/com/ROTTest.classPK ZR=Ձ*{org/racob/com/STA.classPK ZR==A ڽorg/racob/com/SafeArray.classPK ZR=X#8Vorg/racob/com/TypeInfo.classPK ZR=|QH]org/racob/com/TypeLib.classPK ZR= EeQorg/racob/com/VarDesc.classPK AR=#H*3org/racob/com/Variant.classPK AR=͉\#org/racob/com/VariantDateTest.classPK AR=51org/racob/com/VariantTest$VariantInitTestThread.classPK AR=g(org/racob/com/VariantTest.classPK ZR=r  $org/racob/com/VariantUtilities.classPK AR= DX (org/racob/com/VariantUtilitiesTest.classPK ZR=GH3#org/racob/com/VariantViaEvent.classPK AR=qQ]"(org/racob/com/WrongThreadException.classPK AR=ADorg/racob/test/PK AR=$(!qorg/racob/test/BaseTestCase.classPK AR=A'org/racob/test/errors/PK AR=3a9,'org/racob/test/errors/UnicodeErrorTest.classPK AR=Ag+org/racob/test/events/PK AR=D6+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK AR=RM<*w.org/racob/test/events/ExcelEventTest.classPK AR=vFQ"v7org/racob/test/events/IETest.classPK AR=D>֙G<org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK AR=0 u 3Corg/racob/test/events/IETestActiveProxyThread.classPK AR=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK AR=u^ 1Norg/racob/test/events/IETestThread$IEEvents.classPK AR=-(Sorg/racob/test/events/IETestThread.classPK AR=J>i4\org/racob/test/events/WordEventTest$WordEvents.classPK AR=~ )^org/racob/test/events/WordEventTest.classPK AR=Acorg/racob/test/excel/PK AR=fHg 4dorg/racob/test/excel/ControllerTest$Controller.classPK AR=mG)Iporg/racob/test/excel/ControllerTest.classPK AR=Asorg/racob/test/powerpoint/PK AR= i- CKsorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK AR=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK AR=A~org/racob/test/safearray/PK AR=Հ+I$1)org/racob/test/safearray/SafeArrayBasicTest.classPK AR= K .0org/racob/test/safearray/SafeArrayContents.classPK AR=وv4org/racob/test/safearray/SafeArrayDispatchTest.classPK AR=E} ,ߟorg/racob/test/safearray/SafeArrayLeak.classPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK AR=Aorg/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classPK AR=C 7porg/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK AR=@> )korg/racob/test/vbscript/ScriptTest2.classPK AR=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK AR=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classPK AR=(YHnorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK AR=Ж1Vorg/racob/test/vbscript/ScriptTestErrEvents.classPK AR=A;org/racob/test/windowsmedia/PK AR=-m"*uorg/racob/test/windowsmedia/WMPlayer.classPKjjV"*PK "[N== win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK OR=s6win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK 1R=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK RS=hl00win32ole/win32ole.jarPK  R= META-INF/PK  R==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK 1R=jruby-win32ole/PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK OR=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK OR=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK OR=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK  R=`9  racob.jarPK ZR= META-INF/PK YR=ѷMETA-INF/MANIFEST.MFPAj0 =VZT7PH 4% [`KFi;3N9c>g%R;$fl&7\PRzTV\}J:]aP]Cb2}_'%2 A-Jk72QBɛ06gUs}vSAiq^B(rny&hPɏv{|ゥß^E\CS΂ذFVHA*/_PK ZR=ِy META-INF/JacobVersion.propertiesSQ0PO.Q0204P04222T5050ROMQN-P04U04225Rpv *K-*ϳ534J*IKI,I5Z 57hp d̒Ԣf3c^PK ȉR=org/PK ɉR= org/racob/PK AR=org/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK AR=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK AR=org/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK AR=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK ZR=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK ZR=3org/racob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++ٌmVNZE.iEȴ0Ҟ %"# F&.Ӻ ~#A0BbMu { L;}9Ɵd@>5k|)uT C5>;iED7 (4ʔӥ1QFE h6"@n4 NjfJZCܹ;rxDyN|O}g ; G㗈&@ 2D#4륅)(H/PK ZR=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK ZR=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK AR=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK AR=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK AR=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK ZR=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK ZR=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK AR=8uorg/racob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;;?}`'`xc_-XƊ:HeU)o"Xc Xԑ+q#MN5(]嵧>t? ?kEï Z6,W: C)]Lm:VKS2 ChKaJ1+5I9a P Fa%ڮud/, J)Xfh=fMXzeWY<[ҔLQ^J!m)yJ(DDP)Bju P+rY40to"wD];mU^[OO$Z(7Y /L]qrr+3X߶IL:LJ7, R#|q) 9<5a楣G9`2](Pa{(9T=wT {Ȅ ȴc /8~u=9*seۭZ'1gM'eWiv [nةM*K8at4GݹH=V鮋l5h T(E9]bkZ]o%T Mf7$a\1"Z sKEwrr32FIyLpHn3 CBɛ#y 8"&&h;UBu}YOɿQǛ 7ҽըíNB#c{'@5"/=d9;eAO;u x3OX$}UīSt\{(5Q"]/e,# z5 0gK2{4!*Fn{aGN1ZDN1Q:$u4VIPK ZR=<. #org/racob/com/InvocationProxy.class}T[SPN)A"R(/\metIC=N"WȌrܓNgNnwowWQЫ>TЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK ZR=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK AR=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK AR=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK AR=ᚹq !org/racob/com/LibraryLoader.classWwg~fwL6C&)41׍B %d7ABR-q;ILfY^[kҋ@ښZ˦(_=?@稧|3d"d}{-+vJqQ(tLDBZ(&1%>0qB|fdX-Q0}pbl8XO)(oo*oGw/= Aߋ!<*xL /3 Bœ *xJlVX %=(AKOꝖnOuxiO}A^xV(95?SwwPB& ߵsgPwW1m+!2*!FU´',CxtkTwMAoHؖpܩNWO9)g3aN{:ie, ڌdJ5HK3~;;kg:6IpG43f툑qnOsшR-`t궢Gzv2Ю* iU?9TqYh,`;~_RF5]orث% -a˚>\k6ZwȊ3&v2$l-"^yI:Z>1 7Kﱪi=t\2f [am{Qca=fo@ߨ_Μz[ֈz+CI9v&reܜaՎbaa XoKo9>ڐ6&SץaYxx/(X R+tİ =c ؓw }5܌߻헛̸/[žpNn/OL;mODa+킄.R!TL]G'":FzwHsEtHrw9\%Z/A|wC0_5>|k9/=0A/#t‰jDrؐGP[s(O/!*iBu,acc HRcS]Է^EmV!تUD*/nѶP?V~rck{-4QU:3Zvb+d~ݪ>A@M/վ6"c\4 {Q}G_dbLs/*XQq;,ykt;mx}(ex}x 43s|Oe^#.u +{|87q R:>|Z! dT~ Ӌѳ>b8Y,N IwR~HTG!|p t qH S0vT~2,㈌GQ:H]נqPCx= Pw/Ύ|og!2~4ik= D%c`30&/{+滵Ojy jlsYlڃmxQD[q3O$E_0Đ1f_yO/b~QDq+NnWqV!| Up!~DPK AR=nis%org/racob/com/LibraryLoaderTest.classT][D~$ph嫩u)+PZjإEQg N~^^}x&Zx\̙9900VQfWr$gj20 Y/ 㞆9uc^ǂcI2ycYc _3u}7М)1d`]_e!y#Mt9Uf2\S '/nYrydB"fF$Su#D%!C7}Hzk-J_X%LRjBVm!Q>ǮԮnr_K5ЊZwIC `g4&PK ZR=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK AR=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK ZR=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK ZR=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK ZR=wN+ org/racob/com/ROT.classW |Wn&% r`h+l͐vv7JnAm=GxQWj=]&ԟJ~{{{s= `䙁-x8!f(kdܦ"'.; q'^+fSp_/ o,ěBoeܣ‡2N Pq/Nw=^r ӂ~Cbχ|D38`Pi TT㈊+qVI)VU9pQ#*qBb=;>Ê5Zfq[_ V1õf!KCBUnq䭶6tuƢf'913\WpoW6.`;G]5A60VVШ[m%ͱ/!A;n$HԆ@PCsGSegCz*oho>\MZG¾1d,7D;^>*lVԙ @oY~`w(2}]ӮwIGSSļXgNE!#9` C rdqڼ`*L? _]m*5CtS}:l8pj+[FXF֣QvРm]4dhSWœI&\} @csY7}m*m[x*과N-v7LyN3#qj^Csry>>1/r]!"nI2ճ0s=Q싄&O<"v8, ܁lv?WB'Ņ<ű# 6efuF㐸F518i=yeI)Xp#0غ{9-vSyKe+ì*: BEa,zX˨/T%8q\D:.bA5@uey"-Jȸnm(ywfV$5&#Nz]nXɟ:ݐgiKdB,E yiJ2q I$eE*Nq00k8[;$2N9$ytjWxip͞aBoiJAtiK}U4S!, *hu Ũl'pֱ6jq ;ⷑlbM3E60=2/+E_əDYxgbxG;7bn˽]DoaG# ³PK AR=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK AR=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK AR=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK AR=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK ZR=Ձ*org/racob/com/STA.classeR]OA=.vݖZX 1YiÃn8mM)_l|w&{;sس`cܵU)sOg++aaMlpҽS)xUR~=cHOJ Ӯ톐u(2NF2̹l9{a¶S?'B0dk=}kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK ZR=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK ZR= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK AR=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK ZR=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK AR=org/racob/test/PK AR=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK AR=org/racob/test/errors/PK AR=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK AR=org/racob/test/events/PK AR=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK AR=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK AR=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK AR=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK AR=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK AR=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK AR=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK AR=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK AR=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK AR=org/racob/test/excel/PK AR=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK AR=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK AR=org/racob/test/powerpoint/PK AR= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK AR=org/racob/test/safearray/PK AR=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK AR=org/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK AR=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK AR=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK AR=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK AR=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK AR=org/racob/test/windowsmedia/PK AR=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK ZR= AMETA-INF/PK YR=ѷ+META-INF/MANIFEST.MFPK ZR=ِy `META-INF/JacobVersion.propertiesPK ȉR=Aorg/PK ɉR= A9org/racob/PK AR=Aaorg/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK AR=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK AR=?,.org/racob/activeX/ActiveXInvocationProxy.classPK AR=Aorg/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classPK AR=8n_org/racob/com/Automation.classPK ZR=[K org/racob/com/ComException.classPK AR=..$"org/racob/com/ComFailException.classPK ZR=32%org/racob/com/ComThread.classPK ZR=ך[Pw)org/racob/com/Currency.classPK AR=7X!-org/racob/com/DateUtilities.classPK AR=:+s%0org/racob/com/DateUtilitiesTest.classPK ZR=spm@bH4org/racob/com/Dispatch.classPK ZR=g{ "Forg/racob/com/DispatchEvents.classPK AR=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK AR=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK AR=+vK!Rorg/racob/com/DispatchProxy.classPK AR=&t Torg/racob/com/DispatchTest.classPK AR=*-Uorg/racob/com/DispatchValidDispatchTest.classPK AR=a5!,Yorg/racob/com/Documentation.classPK ZR=ZZh,[org/racob/com/EnumVariant.classPK ZR=қ%y ]^org/racob/com/FuncDesc.classPK AR=8uborg/racob/com/IUnknown.classPK ZR=<. #forg/racob/com/InvocationProxy.classPK ZR=ʼn8 .:jorg/racob/com/InvocationProxyAllVariants.classPK AR=C0Sporg/racob/com/JacobDeadlockTest$TestThread.classPK AR=G%gtorg/racob/com/JacobDeadlockTest.classPK AR=o\"zxorg/racob/com/JacobException.classPK AR=SW#zorg/racob/com/JacobObjectTest.classPK AR= w$?|org/racob/com/JacobReleaseInfo.classPK AR=ᚹq !org/racob/com/LibraryLoader.classPK AR=nis%Vorg/racob/com/LibraryLoaderTest.classPK ZR=Ldorg/racob/com/MainSTA.classPK AR=EF5+org/racob/com/NotImplementedException.classPK ZR=5h.p)org/racob/com/Parameter.classPK ZR=OR[ԑorg/racob/com/Pointer.classPK ZR=zM(ٓorg/racob/com/PointerWeakReference.classPK ZR=ϦF|qorg/racob/com/ROT$1.classPK ZR=Porg/racob/com/ROT$2.classPK ZR=wN+ org/racob/com/ROT.classPK AR=Q5 +vorg/racob/com/ROT2Test$ROT2TestThread.classPK AR=d45org/racob/com/ROT2Test.classPK AR=` +corg/racob/com/ROT3Test$ROT3TestThread.classPK AR=3zorg/racob/com/ROT3Test.classPK AR=L[ org/racob/com/ROTTest.classPK ZR=Ձ*{org/racob/com/STA.classPK ZR==A ڽorg/racob/com/SafeArray.classPK ZR=X#8Vorg/racob/com/TypeInfo.classPK ZR=|QH]org/racob/com/TypeLib.classPK ZR= EeQorg/racob/com/VarDesc.classPK AR=#H*3org/racob/com/Variant.classPK AR=͉\#org/racob/com/VariantDateTest.classPK AR=51org/racob/com/VariantTest$VariantInitTestThread.classPK AR=g(org/racob/com/VariantTest.classPK ZR=r  $org/racob/com/VariantUtilities.classPK AR= DX (org/racob/com/VariantUtilitiesTest.classPK ZR=GH3#org/racob/com/VariantViaEvent.classPK AR=qQ]"(org/racob/com/WrongThreadException.classPK AR=ADorg/racob/test/PK AR=$(!qorg/racob/test/BaseTestCase.classPK AR=A'org/racob/test/errors/PK AR=3a9,'org/racob/test/errors/UnicodeErrorTest.classPK AR=Ag+org/racob/test/events/PK AR=D6+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK AR=RM<*w.org/racob/test/events/ExcelEventTest.classPK AR=vFQ"v7org/racob/test/events/IETest.classPK AR=D>֙G<org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK AR=0 u 3Corg/racob/test/events/IETestActiveProxyThread.classPK AR=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK AR=u^ 1Norg/racob/test/events/IETestThread$IEEvents.classPK AR=-(Sorg/racob/test/events/IETestThread.classPK AR=J>i4\org/racob/test/events/WordEventTest$WordEvents.classPK AR=~ )^org/racob/test/events/WordEventTest.classPK AR=Acorg/racob/test/excel/PK AR=fHg 4dorg/racob/test/excel/ControllerTest$Controller.classPK AR=mG)Iporg/racob/test/excel/ControllerTest.classPK AR=Asorg/racob/test/powerpoint/PK AR= i- CKsorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK AR=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK AR=A~org/racob/test/safearray/PK AR=Հ+I$1)org/racob/test/safearray/SafeArrayBasicTest.classPK AR= K .0org/racob/test/safearray/SafeArrayContents.classPK AR=وv4org/racob/test/safearray/SafeArrayDispatchTest.classPK AR=E} ,ߟorg/racob/test/safearray/SafeArrayLeak.classPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK AR=Aorg/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classPK AR=C 7porg/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK AR=@> )korg/racob/test/vbscript/ScriptTest2.classPK AR=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK AR=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classPK AR=(YHnorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK AR=Ж1Vorg/racob/test/vbscript/ScriptTestErrEvents.classPK AR=A;org/racob/test/windowsmedia/PK AR=-m"*uorg/racob/test/windowsmedia/WMPlayer.classPKjjV"*PK "[N== win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK OR=s6win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK 1R=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK  R=w_P -P -win32ole/win32ole.jarPK OR= META-INF/PK NR==META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.8.1 Created-By: 1.6.0_21-b07 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/racob.jar PK 1R=jruby-win32ole/PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK OR=S60org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lorg/racob/com/Variant;)Lorg/racob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lorg/racob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxyorg/racob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK OR=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK OR=>'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLorg/racob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/racob/com/Dispatch;)V getDispatch()Lorg/racob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLorg/racob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLorg/racob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lorg/racob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJorg/racob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lorg/racob/com/EnumVariant;org/racob/com/EnumVarianthasMoreElements()Z nextElement()Lorg/racob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lorg/racob/com/Dispatch;I)Ljava/lang/Object;callD(Lorg/racob/com/Dispatch;ILjava/lang/Object;)Lorg/racob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lorg/racob/com/Dispatch;Ljava/lang/String;)Lorg/racob/com/Variant;put?(Lorg/racob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lorg/racob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lorg/racob/com/Variant;H(Lorg/racob/com/Dispatch;II[Ljava/lang/Object;[I)Lorg/racob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lorg/racob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lorg/racob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lorg/racob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;org/racob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK OR=`9  racob.jarPK ZR= META-INF/PK YR=ѷMETA-INF/MANIFEST.MFPAj0 =VZT7PH 4% [`KFi;3N9c>g%R;$fl&7\PRzTV\}J:]aP]Cb2}_'%2 A-Jk72QBɛ06gUs}vSAiq^B(rny&hPɏv{|ゥß^E\CS΂ذFVHA*/_PK ZR=ِy META-INF/JacobVersion.propertiesSQ0PO.Q0204P04222T5050ROMQN-P04U04225Rpv *K-*ϳ534J*IKI,I5Z 57hp d̒Ԣf3c^PK ȉR=org/PK ɉR= org/racob/PK AR=org/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classŗ xW7d7@CIhUDB@o:LݝeBVЪ}>*ZbnRPVZZ_֪33;lfPɝιso> `E5fqn…,q/>O)/p؃{Yϰ}|E>o,<Y n|fX|كYaN#| =A܃nz{.\.f N9s|E3 R+6D.k9FBr~Ta%52٫A@S2p+z0*_$Kf֐ s0n)h%mƶ}]n` jCXDYm8$p\G&}{AfOۍ"éoM\6\R zؑ>Ά>)Uv4iƊgPrT8{/F[tڝ|-1}Uq>qcEkFggX&(p1.c@AFGcc՜B@>>2^"7K1!yPAU;4u t:ӢSG!ar2-: ?r}ĭm#g_g0Z99Waߺd^q'~jlhZԙH(1O1W+Ȧ_,Qy>iXWD=+[jHII[b8!焬%rJ GZd!Dlwt.NDJRkڅOa7KNbH1ΧHUcƼQo c$ tQi{ƈg ƾ7zՉ+{-k"s $3i,>NkWeO?tm3>ܨѹu5;0zd"hf|Ri)߰ĭR˥ټٰ^ET3>Y]0V MB*nVivV~]iVGN橴87躥#6'澻83aG8)U| o0R,b }U2%MtΦiϦZ~uS7ralle]V͵N:ں7XֵՈ!Luix8M;&,{LdzEq֖ɫAf'-%5^5^3fuѕ_N<. )Qn=xwBL[iK2mI-,4Rhs9|$v.|va&f;,Gͅ}%Z M%| KL%yfPK AR=4n2.-org/racob/activeX/ActiveXDispatchEvents.classn@M81iSZZT,PT((% $wlIVpC%x 1kV.aK37;c+бe+X5pWu\q!{KBfX/5<1}ڦEgISoXZc-v ņp6wvv&mu[/:dGC ˖b_w`]ٯ3#;Y1ri .ÝNSuf{l3ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t xn=횓ݽ~К:״=5C&E\:OYNi픶sݞ=i_D.-peMoQ#-UWw wf1 }:q$K7뎞3\)^ywgB~_ߓR]"0EtJyql}Oکb:Sίd[CF*ccv|7٬1g{bΰ\t(J]ͣ?׏<ǓT.U%Z Zsg1XtAcy{} $=z6#&2vxE2,槗=it5`K{#1m*eV6hS ݷ9?xANU_4]o5I峆`#%#Ne:&lTtSilW*^#MSf3 RI+3Mxr:խZO]:FUT7w77̪@dxGJ*:%F6W4c-5rzvvάxGB]wqFY ڵLa|Ͷ1ۙ(hL7閦;>G|α<^/} ~Xukmkp|N͝}T1aQ=cqFB^Y,Wz{smb 5Wt.<PIqU7nwi^Wvf~P kfMU]D[oHW%%5&jY< DDVkE5POvkh*kW3f&]ﱕb"X(dq>ſ$Qnᬛ>1 ԡmގlղUob/^m+/;( %;K XB[³|en&YǖY(HG,2 uDXK %"3hD9EJ:|m1XBACLTF400 c_`Y,Ak'-ml 3XIWadU Vn`mB4"\M4p1(V1+;̯uqzɕ/Q8IX]zՉ7G a Dğ^Mm\rC%6ɍb\M=:V*&pޝC#B1)OSW}F8Rr'Ic̃rABy q\ʌo5T_rE.LPK AR=org/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classV[oG6YL @Z=P`b!JؓxkN/S_؇VCyDUT"U*Zͮ;R,kg̹|9gf 28# Gp뛃8A*qxBIHG: 13 p!7\ @#dJ;b4vSaqa~ :7V[Y 6-Xe)Pyռ3z-_,`oȺiϩPLf`B&+hlw]CPTq%,ݚrlﲹ@n2C$ m v2_%MBX"mҲK1%Rdq79-fMTA0`^d52^4r'srz\h%Y9A9n6U2cYʹzjK4\3g'lwkLhVz~Oe裬VńaK2sdN9VXprI%i(!|$-R%rJh)^*ᑫʂ%!wٴo(Ik}+7 ލt˕I1Y;;x6U<_ QQ<*/FÜ%(zDInZ= 5Vk<5RINr|~4r=Jl:IA}J(-c=90qwB腽3+ߢ\52tIB7L7X)N oZA\8*ltKϐ.lS=k'@OwTY0U/!+PYGoixsmZA4c9Ѝ ڍ&>\$6VSCZJ)YGJ& BNmm -db׃m$mn|TTKn#;*-,:5Œg8s\5>`-ak!IE{}%J0}` # {g6J |HdMx '6E^hʱ[X Vt^CSdem*Vq+yojfUGw6#/q Κv:͈6zhO724!;274*x[[^پv03ᇙ(SI''G8wY\y\@QF)21/1o`i-os}?.?0S+S8n$0E ` ɶcmqHscvƙRc!^G{VL6.Aw">Bl 6Nk@~ƃttнQPK AR=8n_org/racob/com/Automation.classuOJ@}ӤM=7o ^+<=I%ٕu#Y~%Nb 87;oޛ~}|$A481!F!քn!ʹQM+y$vޑτ̺R8Y\7ښ9aXYY>L焋i/RTҔb6|Ǿ7YNae{c}ل>!ߪ =|[=Pgx܉{֭cƨ#0~ h!3a>PK ZR=[K org/racob/com/ComException.classR]OAn-EPJ]>&D(eY5..ȋOA(㹳꒘M=3{9̯?~meP4D5F&hy,AV(H4tvZn{5#(d5 xkVfz~sEP BEuAjm[awtg]7ܲwcvZmjQ la m'صcGy5`[j_O\PsN6Aw$w|©3Y?3'KM7Z?)CąvldZK^݃6T31N2ii FE*H d*}?2J~kx^yo5#Q e`imn'GO[٧@h+vh@Źjkrdj~9G%lXvY,M/XRDES:J1ez+Yc/2iYfbm%U(:<̠H28fl-ž!T^UQ̓8\F]9NQQF7"vS7,ѩێRUc(ý%鸙ҹ(#vVdΪtnΏ:C[RORK4WAR0w|K^:ߒ=PK ZR=3org/racob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++ٌmVNZE.iEȴ0Ҟ %"# F&.Ӻ ~#A0BbMu { L;}9Ɵd@>5k|)uT C5>;iED7 (4ʔӥ1QFE h6"@n4 NjfJZCܹ;rxDyN|O}g ; G㗈&@ 2D#4륅)(H/PK ZR=ך[Pworg/racob/com/Currency.classuSRQ=7ې0,$F!P0U`J| L&.~C*MJ*?ʲ0!}9}?LI qLD%c4WuPpSn)N *&:pWߓ1y)R0%6VE$JnVCo~Y[l޶ʷ" p2se K,TY&E]f;U, !n[;ںsr4F]#̪cyXP(ڇmߗlߠwW**1^|ə|sS"&zAJi 1(T7hӵw| ӗ/яDV!VC JwX}C P!Mj&y8a<{Nؒcˑi |)c8C9N{| ʑ=v"PGS5G<$u'G 7g=< ,?b&__(.1Fwc|2R2ӧfjc~(ຉ/EK6#׃( Jx3^- ilƞ $0hAWT3NZ"UNmUj@{MGTvtVlVVF2&׃0 Wm2F1B0r+P@_2dnȆaBU5> 60YJcU 9 $O Қ(E1L 2p⌹Z`7ltp?G82k0T HS:#OFQQ/ ]]M&S:n;86,pE{|@y_ 8+݈ZF 1UWRN^fo24 SW-ˬ)ΦNOǏ54~_qS|v06O5Xv!~sI1;Nr;8_Ez<н=vaz2LL!0~$0c[{Fg!?mMULvิO//as7bE?3p :xy O t,*XF4,3>t=7xm'7"$\O4yBxNyeZg0~yQ:+yQ ғ{ 6N'%VŒWeL_+vE)4E^yk!èJ ʮ^yu^]b*\aX (\y蜺obc Z4<5ŗ&B30 ) R>ÍЖZY*)u2jJoM>"7X3Ǻ /-eAj^% &^ba/ʒ:-JWj3=~`:.%Va*cgp #p}A'yUIQE^ř~x򲣓 aKfNNAR*L4xR \-lbN$ը vL>? Ȗ}HGD腏ZD^K٠t8 /qAU#v6UZUp$]d#Pn0j8N+fFs>+z{4Lhf CSzGwn}Hc+M3MMzP}MDxW!=nU`:юX&Ж%Fi\rɧ )@D.;IMWJSҊ]Wȥ2k T^pQwWp綍}jtzw^)' 46й-٣kڔ͍I)B?"]CT&UX4 I;mS*#LsδL )6R,h\OH*;Q`NzR8TU <$=DN r\#hij xG rLp}9SHDRxi뤜g rnD_, !Bϗ7ݵ]韞@,Ʈ5i*UD6E]TiPJ}F&,t0lH19ǡ-ɽJE*, m/mm̂B].H9!ĉҳ"cTf*{7sEfRCa"kCZ-%NuFq^&;r[! 3le,bqu•g^ !1'鮋Qr$40 $V*6lflwF֢6 %N--t;DV!$2dw%1lAgɑFuL r/uNVU_qJXHعb]F`;[E`zAS i5;$ggA@:^C̑qękXU.ݹ&'g0 3N a'R{[ʉ^ ', @'_XN0)&pA||2JV6Ь3nD.|V`x~ 0{7'ۚO4ʥp2gI2?7yI9޹u8L ]8Jr fe}/֚I@gs;m~ F2So߷0\厅b wB& 5ZJwn"+!E_VjE-"\] @@dRK4HxK "NˣR37:9.g ݻhfY S-dVG3BTJ^d:R&*OycTG脔傜H[ ԳT2GTNN8CxT`\ dԐj2o-|>ʨ]4 cI-& RAֹoe̖]L2+dzi7{d LINR3ҥ\0pK$DiZ!Pm^Z3C#x`=tx笻ԅ ^1MT!HEkp! ,8/t!=sU& =I}/%`{[7kM[WBԡt*F|gZYxMnB*ۄQC?ˮ bwȇ7C;?lX:?lMklյy:lk۝wэt3LTi&l j= <; *@= ?Wm,݉][jszN r; 5wk0xw?T`0QiA>X2Ke2X R1Zۆz5]^v ]46u }Co=C"ʥ9PZn,B%N3ܨl-(B 1N s7܃0f`GWdTTiQV:Õp% SF]eH]V[@3{VuP- l%xU^9 5KIUXҁ.⠋@V65:Œ2֘VKA6g*\n?FN&e05*3)&Bi!n 73ݜDhl]*A C1x#[`)ӉU[ Uո0/D;t f&b+ sYe\wTfu/q23іْ7İ;왁%4HH+b7s0 CAYi65AMaMTjpnjAѪ%`hՄPg"TP@ hG,9:d-XnV̳l޴ѣ8P: AM'SejL-\ede.C(s6n%w{_׊#>A!7o޼L8>㧣Mơduu\R3pC؄UlFЙyr\{/ITL<+17߫ hxb |l޿z0q}S'QK Ԟa؇<1YD#)A(5Rţpo"<ExAw0@^f r F8WҪUJ=S#ӻ|_<:AwXGʲWhڝX3kPCI=aT֩s(gr(g2Z knhF&gI3 {F5pđ8RGjHM!?)3C>¶?c*\iJt E+nSMqGqGqG1DZk^ <@`'B`#ɅWЅWm|Gc؇Zk` -f4IwUB t7<,"jQm)I1=,)xDcHVݦ4繴eBu<P2SfB>맯=ƕaJmֆp:],m|*I#Un8ތڽTƫnH?*2R@mF@ʏQxiKIrˣp)0glZ&]r'GQfdey/Μ5cʺ 0)߂ʷGmKrEx)-F{PtI@<]bl?C眄 Le\jR:JE @"Z/2&&PXx"|!\7dcx SBZ/38HHMXF yOJ8qRj ZE&Ex<Ԅ]!X)6.iI%&7p1X#."|2RFH҈?3bs1$d59'Ee4$&-BHVu9"eeU0ԋW"Rl۠߰ :<%Ex2BOVMXBk yOXeKj¼ 1oy)LZM9ՄqF{_ĵO38i5# G)2sv9~;o#3Fa/_0~R/{-FY+$hYZ?^F퇩|-_®u%}VĠeJWPUzFVbiZ泰>پtw{tcd~t`$ A8?V QhL:U$gPK ZR=g{ "org/racob/com/DispatchEvents.classVkSU~6 p!4X*T*P(*HMr twåV:8ՙӆZf|4@q89?8~X&Ƥ)!]m\QCW$k~`Vu=żP`f, >~,aY`Ҋ[~¤/T>P1779k[; l-e%c)+0^MeW`'u'ĺ f<厜]dLXiH&&}CKL cQu^kp66:NcY; rd^77#>2\=3ں1l+O/3\_[TܝOIļ6̠qRAJp'# S=DWT`|DX#:ca8q OXV:,sU> 9yY˺qNpEX2" 2*֠3WF ] Cs<;.ul V-;$[ʡ,Ln3>1*^ 4-7dCf0!4tN g4c䳄N0 +W-#bT96#@u2Up.e9xG7Oe{*VAw&y22EGe7,FPt`剢Q%hWq3-=wd #<u' |49fPZ&&-!!EWLll{@I9)v ^C]@F}N蟦V^Rj>2>G_ɗ2CH9-`R IUt/2S`PW\?# ]YTI>NQv\yk 囧(;M 0SÇ71*;@HohFFel&3h dRс HRra-}oPK AR=L4M4 &org/racob/com/DispatchIdentifier.classWwG`0j5 Lz-ckfdBd!@,{yM/y9y'H5R ?cYs%qNs,ܽ3{gvg1}Ǻه^1gl' Ly~;-*Z\fY#3cF)@#~ 8$̮뺞 /I5Ζ7B1b!Wu8Lȿl؂\-ufG7؏Ӳl?g+aӰp*259W~hy5GH^ٴo eY5,ӭ#6o-l,#~(Kԯf 0]a.z*Dv56(c1.g_%c{2\ң9Zni#i?D;^,ԺkncI ruCYCaع(;uP"{PMGmrkLF%e=_3;rLV9O~ HuN|։_~FzBCPg:d oTU H.jyg%]#iUԛ<8ux=6?ኹ>٦4i kQ?`[R$K$\<8F:g~5ÎN#mn:Џ;48[679FB;1o4" tЉs2mg ʥ{ g=Vl[*jBdS|$.9V燫BebP8l/k bV:W*V}QeZ(:SvO/MᩕSabXmɿ&d=l . /"^ /ˈ+Wīkă@xx xf[ۈowww &"CG>@|>D|>B|>F|>A|>El&!S|a؇{8cgq|>~ |#>_ .S2qD\%k3eGLj ~~ig爟_ ~~eW׈_o]=ϷًOC?0Jy?bJbPK AR=Yo-h)org/racob/com/DispatchNullProgramId.classTN@=lR,P$Q&$+!YѶig<M|G1)\tj܏sϹ~3;(`32Q*sʽ 7 `Ƣ%,,[Xa?ܖ n+<>? S*SѺیvNDp*tMc&`8\YO6%JoªCota_(ca]C,¦>q; vwGt0L2c=ا=F+F:%I SV4aRy{ф̜3ws?PC̓ X+><_R5ev5CJ;~Mb4F~l4|vN͓HdGxFr:k!,~RЅEh PcY+ܖNwqO} `nڦxI'k0Sm =VB)GV"o)i.ם;m,inٿ$ QAAu>Zֆ+ [lԍ0PLNRG=,nvZ س/%/V $0;! JDm&Jwʮn옲$ᶇ_T bHCPc;d#‰ iwJaz(P$x_,Vp鶒ˋY"*-͎x`WsI2Ժp mx7(,EjMyYac?W6yɐ$wVbb˫-{{HfT߅O%a2 &-/P</ ;˰*bRf W#*?~ԖbBR dPrfو'h&[04s'`Y_ud՚cCcu|M+&R;PW +P+9['m(GAiKQ2|ixxDF=cRgZ>E/S5fP ~ t M1E\䋑wbH$_~"$%t5eҴI:[qPK AR=a5!org/racob/com/Documentation.classQn@}8q )IC P'$BT¡(J\9^:~PG!fmٙ޼`UDOTU m , )?né{G~8}PH/)f"Ҟ c5f` #? o;r|ubEmNz<Wu ?ch d4u#ɱɹۗb.˜Ǿ iTu"x7wYп]$t"'voe6PQR eXui|*mz2^DMRVS,'ә*u.`4o`jz 4_ӭ C3@LEB*m)%BΔ3Йrәc&n\:U޹A!vҐaneN&y;[%3ɍLJ~InꮝPK ZR=ZZhorg/racob/com/EnumVariant.classuTOPڭܦ[Q`\28]Ƈ4K!?_|D шQs:`m9ޞ}|n805]q NMK~2!xc Odxs2%,0rݨ1 N)h]Lv%]S 3id)v޴LwALfSrkp=gZfR4WZL;9[M5'vfݪWΩmZ0IIvچebX. Zg [ơ1 %Sm ;[wamI dB#*ҨG{ځ.kV)g3o,xkk߲[k=u GsMۚoþHrޮ;tH:š!M^DDRЍ1,JXRcWpϓڴu}yP7 6#|6a6n'~B>Ew,Jsf@-QQMe{6x) % ?ARs{JyAK9j6-}TNPK ZR=қ%y org/racob/com/FuncDesc.class}T[sV^"_8!&\mbH ز 0(Lm)#iԇv?l+췻9ߑ-x) 42{d^44ɴȴɼJ xj.U.7"5 d[װܶQ<`aVZ$S<,^VRYeY /[x\QLJVƞZzMlJ.NRKmNkyT*rO9X[ +7Nr;5,o +TSKT]uU5QqIIL^%Z 5(5eoLf{k:0 ѵN~D#=hAp7c;v7I>Jtq?Q]=\DL+=hg:q ~ku >unBQ mb}Ϋ]ˬӤNRkNﻃ}UVb:Wtc2(cmxmt"*, LVѠs&WOefR>i~Wtcuԝ.87Qlqb~KJdlC.l P{'"o?Pڱ3"ڰ%d՟_~9Ë/%Y&e8ˈV|xU>x݇!7[op;F_$غwd+j^|RW|>B/S>NFWFWG .fc#\| 1Ǐ )f#HFCiRl5x8 l&v  `0F&0ƌ21F3G&GOq,_/8۴iE֌0.`' 7C߅AV(i(9$? %Bɩ q( R9{Jw7#i-#Gb;,ϳWnH#`#FM%y" jlgN"Ttd=PK AR=8uorg/racob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;;?}`'`xc_-XƊ:HeU)o"Xc Xԑ+q#MN5(]嵧>t? ?kEï Z6,W: C)]Lm:VKS2 ChKaJ1+5I9a P Fa%ڮud/, J)Xfh=fMXzeWY<[ҔLQ^J!m)yJ(DDP)Bju P+rY40to"wD];mU^[OO$Z(7Y /L]qrr+3X߶IL:LJ7, R#|q) 9<5a楣G9`2](Pa{(9T=wT {Ȅ ȴc /8~u=9*seۭZ'1gM'eWiv [nةM*K8at4GݹH=V鮋l5h T(E9]bkZ]o%T Mf7$a\1"Z sKEwrr32FIyLpHn3 CBɛ#y 8"&&h;UBu}YOɿQǛ 7ҽըíNB#c{'@5"/=d9;eAO;u x3OX$}UīSt\{(5Q"]/e,# z5 0gK2{4!*Fn{aGN1ZDN1Q:$u4VIPK ZR=<. #org/racob/com/InvocationProxy.class}T[SPN)A"R(/\metIC=N"WȌrܓNgNnwowWQЫ>TЯF ;+[-YwTŐ{Vp?*0 `!Jk#[,>-6 !5ႆhe:%aNmr'PP#UM8HEY_l*JѴ&dAs1h2Cya_A !|f%y^zYȖ+I$}hCN(t]^/d%Ag>7%~cҪDA1\Bwr8!QxuNC\?k#QG(Jsj};PwpfZOtA?!泻h I/A5!TEr8!HZXLk0*FޮZخDgݯ2nPK ZR=ʼn8 .org/racob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#@!!tf:&=COOBnbKf@I)*׮XErmuϘMe{޹⦅~Q8_ݸ \ C^\F-F«aDp%B&!c  Q=qL`(&L*0CH`Ia~!dPz;e( (5 uI]ǰ\zLw13U=vB35ǐ2w I8ZkInk`װǾ1frmA\ӦSR-cXEr + lH_ݜcykzB#tWw'"k RRPOÝ9u#g bكĄ/^U6M=mN*-cX"gŠe;=9W=:}ZZ_#XȀYRjݮ]`k|E )"*]-1٫eb{2bg显tk9 ː9ml'Ep@t70C‹w=gI-W=SzRl75ouH:m\T}WլFތ-܊m>;(KLlT?Ion 4f"c uf$صUUֲJW)>eqI1P,e3@`piϠxa:vZV4T%۳'ͫe"ƴxFeRjuuKwԘؤg=j3.E곪Tcvp :], E/Z=Mkl>Kd'{2o--~6/s+4,+Ϗk8Ė$=ry GJd5JEWe/6V.c~tuF^xZt#vбzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=RZ9l+h@X;RK9|Es4>6i`$JѠYRGץ9lE*XkY}mX }Tv"w5V/9?s5 5'NJ`}hH`?q|s6vgۊiD\B'fp,>A?nc_p=MWWǏw$td4!ja͘$+SD=lq6w]xDIn~r z?y@owL0G*s ^e˔˧FpPB'k):D_c4*OPb_8"Юt3 tsp (87S,P[#HU8^e^aiWNwd6>ø@ͯ}e m%k&uT)VHL|aIobPuZMUɌs'TeܿoXɃ<1xy֯dƬopӭg,=Dʪc"~6Ä dJ PJt8fYk/<>sQwWc g\RmvsMJbC8C{9{0=t<><98э "uZHӎqEȱӱu1z"BY6o#<ǩ}t&&&M$qt9Iqnrѳi='y _M'KiӵI \%ibI\'"f9~SX"d#)$x^ϻOR.{''rJ4$+' K_'Nqc95+Iu;Fȷգ,8WsjZTI%>r/NۇZ.W1\ 'ơu1܏ۇTZ"J NRt{X k?qŜAc6[a&yO籪~{c"pHE#kTgPư.H;;Puf3PK AR=o\"org/racob/com/JacobException.class}MKBAi}a2n 7AfYv !vm?Z'sRDbΜs={׏g5,'QJ!rp$J.X!z|K!' f!mK%:/ R'a96c޵tVڱM[oZzdPg(V7|!Wzfr;0w,q(OvnGO'r i0ǰR ߆H|=b QST#AAUI:f(րQͳGDBQbn`F70KYz"CK N RDuI;!4QM AG LPK AR=SW#org/racob/com/JacobObjectTest.class}R]OQ=nY|hwU4fFHnfğhGbKJ>̝33gfv.W6f:۸cj#"fcƪٸE<0YxPx##2C~_Ü'#E|G"Ї"ѻ ^_했"@@Pe,yď,dƐoT1>W1&NBV9F3BM^{ѵVT*{&ýU7 Oփ`|j׸pab _ޫ*F_Q7!EqaI-Bޡq)>yc>;HE\&FIk$L/ >3?ngQzuQS*~ Uqg~Ev/O[F7Vhȧ QVm"ڡ2O5co ,|?%B%%y?PK AR=ᚹq !org/racob/com/LibraryLoader.classWwg~fwL6C&)41׍B %d7ABR-q;ILfY^[kҋ@ښZ˦(_=?@稧|3d"d}{-+vJqQ(tLDBZ(&1%>0qB|fdX-Q0}pbl8XO)(oo*oGw/= Aߋ!<*xL /3 Bœ *xJlVX %=(AKOꝖnOuxiO}A^xV(95?SwwPB& ߵsgPwW1m+!2*!FU´',CxtkTwMAoHؖpܩNWO9)g3aN{:ie, ڌdJ5HK3~;;kg:6IpG43f툑qnOsшR-`t궢Gzv2Ю* iU?9TqYh,`;~_RF5]orث% -a˚>\k6ZwȊ3&v2$l-"^yI:Z>1 7Kﱪi=t\2f [am{Qca=fo@ߨ_Μz[ֈz+CI9v&reܜaՎbaa XoKo9>ڐ6&SץaYxx/(X R+tİ =c ؓw }5܌߻헛̸/[žpNn/OL;mODa+킄.R!TL]G'":FzwHsEtHrw9\%Z/A|wC0_5>|k9/=0A/#t‰jDrؐGP[s(O/!*iBu,acc HRcS]Է^EmV!تUD*/nѶP?V~rck{-4QU:3Zvb+d~ݪ>A@M/վ6"c\4 {Q}G_dbLs/*XQq;,ykt;mx}(ex}x 43s|Oe^#.u +{|87q R:>|Z! dT~ Ӌѳ>b8Y,N IwR~HTG!|p t qH S0vT~2,㈌GQ:H]נqPCx= Pw/Ύ|og!2~4ik= D%c`30&/{+滵Ojy jlsYlڃmxQD[q3O$E_0Đ1f_yO/b~QDq+NnWqV!| Up!~DPK AR=nis%org/racob/com/LibraryLoaderTest.classT][D~$ph嫩u)+PZjإEQg N~^^}x&Zx\̙9900VQfWr$gj20 Y/ 㞆9uc^ǂcI2ycYc _3u}7М)1d`]_e!y#Mt9Uf2\S '/nYrydB"fF$Su#D%!C7}Hzk-J_X%LRjBVm!Q>ǮԮnr_K5ЊZwIC `g4&PK ZR=Ldorg/racob/com/MainSTA.classm @gML4_+ ;0`"XEhΟ,|JD]v>f`@6J6k(cyvgE0'jʾDz)=B_ -i+"T72^,PgFS/E0%6 _ -dd۬;/@{]fRD i}PK AR=EF5+org/racob/com/NotImplementedException.classP=KA}h"6&H8Do.K\ { AK K+8w "̼y;abV  TciFJGgc 厎b+";\ޞ^/7m;ޅn ;FE$T<<Ks*35O$8/2kULhzL]#|=v}m{,\rf8oT:&n 8C=7$`DX"ֿ^?AD? # *SZYPK ZR=5h.porg/racob/com/Parameter.classuR]OA=eiPȇ`;(+UQECBBeZ2_&nL|/26(Їs3<`˨`CM&2 Őa"qvpLd޲ڱ>0^yGsQB]]-u*Ygδj6 =o),SؼapxIQb 7%,(!شLjd5 I*)X훴&ߟo")GLwʓ;媠;֝rNy+NsueTս Ep^21^1OOL {8`=Ju4Lǂa/xOG"{G )[4ɐgKgr$x8oRȞ2E:IN~1gx+g8sjcy|_\Oz|bBkX``Ħ-BK*ra+"OJWLǢdZ)t|ZWpWW?9w3%a2yǏ4;>Ws/"[~7xnDr'=ţ8 h[ z:\q%TqF/P*FD#=4m6PfdBg3,ϸ)ýf&M?Ѣ(^n4J^2RjH}XcЩ1|<̽L c.!7 gXI]TӳTӾ@"vXPK ZR=org/racob/com/ROT$2.classRJ@=WXg.\ #.a48DK7 ~%Ds+md`aA (XX̐)I%=z!uۂ!_J7-a2Q L]cC0>!m:nqkg]EdI_\[\[\]\5q)P"eG 4D^Z>WJߩ= 4C|ֺ^@pq&R9uOhF6)=:'"궅, ߲0q!#I-a|-{ѓCyioYiHo<=%l&1B6I ' "V67'$G~"LR"20Ә,bt([PK ZR=wN+ org/racob/com/ROT.classW |Wn&% r`h+l͐vv7JnAm=GxQWj=]&ԟJ~{{{s= `䙁-x8!f(kdܦ"'.; q'^+fSp_/ o,ěBoeܣ‡2N Pq/Nw=^r ӂ~Cbχ|D38`Pi TT㈊+qVI)VU9pQ#*qBb=;>Ê5Zfq[_ V1õf!KCBUnq䭶6tuƢf'913\WpoW6.`;G]5A60VVШ[m%ͱ/!A;n$HԆ@PCsGSegCz*oho>\MZG¾1d,7D;^>*lVԙ @oY~`w(2}]ӮwIGSSļXgNE!#9` C rdqڼ`*L? _]m*5CtS}:l8pj+[FXF֣QvРm]4dhSWœI&\} @csY7}m*m[x*과N-v7LyN3#qj^Csry>>1/r]!"nI2ճ0s=Q싄&O<"v8, ܁lv?WB'Ņ<ű# 6efuF㐸F518i=yeI)Xp#0غ{9-vSyKe+ì*: BEa,zX˨/T%8q\D:.bA5@uey"-Jȸnm(ywfV$5&#Nz]nXɟ:ݐgiKdB,E yiJ2q I$eE*Nq00k8[;$2N9$ytjWxip͞aBoiJAtiK}U4S!, *hu Ũl'pֱ6jq ;ⷑlbM3E60=2/+E_əDYxgbxG;7bn˽]DoaG# ³PK AR=Q5 +org/racob/com/ROT2Test$ROT2TestThread.classVsU\IRrkeA(IZDE r+-4m [ݰpUĻ>0qq2>.ÀIKow}m|ov0dm8%W)'7 N+8Ar5Yd8jq#vCx'w#jKX) Kr\DKQ lEg&[OMWD5YrᴙtE])%=c%2v!1;nɃ[eZk6oPYԸҶ]i4<5]R@gt% ni1\'6$足t:eZF_0f8X:̀BV+P{,pzd| -#vIgK ԚiWwnl~lF%ZϸZM2|[gr )]#{Z(mQT)pf.E/f!׮hƖIe'c3ef#픒*vSEvt}G.CT@Tiوbf>k8RK*ʸ¨/Up\5qCM/KKT/vF5 1cv MfM[Y-|>T|*n㎊qW'XUth8eyQONТk:[g\*+x5Z5[ϦrzW#%g}zEыEâi,aUkhZ8!"\qWɛ k1!?[`_1xaefNϥW-E.CdvA4U,v4u,.Ni^‰QO^q;|xzy< 2<o/gb7i3䷠4FJF4h^죞\k0C_(/!0iߵInǞGPF!42p| )6$P7UXK0|WgH 0D{CCjZ9ih$fڥP!g"*4c7owZ y@whi E3(c=|w#6=D$Qn^ Ch嶬$3Rɧ݇h1Ċ*c!V0WGXIsu}g;g/ F5 &8&D?bqq/D- {e oWmVyV-V9T;f0 ~Tp ¢1'c Q i445NT=V;³:PK AR=d45org/racob/com/ROT2Test.classRnQ.?RJu(7.hc$6i\]Ng̠/q]|ƿsZI|s>xqXVpEJa,ǰ*y) -}W.ZmnY0iڦ!v"[NW0-vmx"Mt]S'ʈoR wq ipގ,>33(~@OȐ=%L6}y Mgv}SRJGT\E +;CV{FwMWVW'\*(Io!\<CAvèqOH! ¦ew”jˆ:c3V1ӎQϚ۴w].Gc ZDdIvF#9CR#!<褎0 ԷuB]tŒv^"3t皯BTIt_$p@b1Y*$.Bx9lBCrEddŎODjB8m_$9!}704_^ *~PK AR=` +org/racob/com/ROT3Test$ROT3TestThread.classVsU$)h*i%zINӥn Vuf*"-g|q`&)鍱|{w AtBXtM E}byL>H  /Nyq$|H{1P8BCB6EFw3^^XtfðpNÚaT݊\y2 jV Uma5tMCEU;gr6LM5a #uLۑV[隭鮜ޭ'ec(YVUs4:{vpayleh ,&VT65={F-hF(%æp5)l6 +viꟺKutrp%e \hM/PU%ّ`4xI{Yt ,y ܡ"7A>[nᖑ2q2I""TfXp{];r )B^laHwBEhITVD'dK7OʅQ&i,_g樯 2#BfkṍI56 iʋ&Q廎Dʚ?#$u`!X[ A(RZ/~*{hpTO<_vhn(<i m(~s8 06U9D-?b8H6G;}t`]^>E8Ϊpգv"΢HX/O`]F"`3l6aβ?p3+J~崎R?275b{PX˄҅$-ϽBzR` b>bx@ƙ S'AYh fa^qyeHv즧΂8PK AR=3org/racob/com/ROT3Test.classS]oP~+2N7tqePG!a3BxNZ~^S5~[ly?}؉BŪ5Q6%lE tY'pFàV-K8>w]25-ӻԳMPDʹ%oɒmorǔ1LT2qڲL=s~qgO`?~Aj8@7>XOB‡W#xZxQa$PY5Ԑ \0p1KqX Q`' Gmj4*.1J))\Q Zq 4Ẇ>̟JE >gp396HmT !Ӗ*tGEJj֨j~6 9DklG)u;=2"=qM"yxe딥O 9?㚎;(1HK7?oES\`j7rNаށch\nK`";u]c ^{UyLWVz%-$$XVNYMISۖcOْ6/L:-9W>л:vvvpU d6,WXQ˳I|r5a$Ykּr#vQthغ PFrՕaY<.syWZNʒN龣3sRWIvqtTX}yWrY'U-9=גJavXPCADY.n ݖ5J iح^)&=s2c_->VOwlYMI/HZUZL!9nzeU XƓb= JRJeoS?]nMWwi%~s]e5{T*oˎcLdיRBb &ۿ<Ā<5Cy#dQ_ v+Q隅)eOޑizr&2;vn+=&V;Uۺ;qp}FW,3+x: nZ3}1OHQLr-iE X}g +DeW- /Q.Koa )lԺ93nǚԊ138^RdPfphp5g<'烒(c%-JџqWWҘa4/U:QzJ'FO qj{bi)bAaêTqZTѝDocϿpscSiJ~͇-,/PmǏ|qAO=A>Gb3pQ1) AS 8/PK ZR=Ձ*org/racob/com/STA.classeR]OA=.vݖZX 1YiÃn8mM)_l|w&{;sس`cܵU)sOg++aaMlpҽS)xUR~=cHOJ Ӯ톐u(2NF2̹l9{a¶S?'B0dk=}kBŊ7m[8읗R 8XGn[2č]"xXH񶱘i|XJ0Tʗ_5%kœWg,$ބvΞ5~&{~9B%'VP6*):ę6mmd~ij\0n/ga0ނa| _X^vO ̶k, Ȇ=<܎;hDjNuMdGd a+dұ Uc N,}2&!#S #JwOga/4.{y(vrĹl$,>WϥuM<8!gU!dUCm糃BЀ'雂^T5\˳&K:K4fZ)%pO(<]cS,Y&}>o^T-Zb:5>ܘnVwh5&13l/]V%؈Z\S)F )LVh 5RAt1Gjw}qN.=ی.]^\zyjU+yX!Ux/Iwc59:_㜻᳎{ !W6wQvWNl$%Ƣkg&XEjR\& RBL1Nx=x`/ ^>būt;v ^8 8!MNq7Й2әܢ܊m nWAGcpL1'|f| ݷbIp;oK'o|^.KR?fBsKxguxe[ W*JV&jF񵊯|= GWGWD]^w o+6%VM߁)S]z{V/x@o8> ~@o+~PCދ+~DGnh~v ~PR<*IOc >}Vg?y|A_|X# =ׂ7ŷ~>~ шo u+)i=~ GHmNS , S{f7[}֡awo?&WӎRNÂN@$:`Qpei1j*b)ƣ-&@{]p+k㨳סɾγ{{qi76jn'>{#=A8;F㍝sg{H#oÿ~1 __ykD~CD^'7;}woDDDwr>5y++K7v:bx0[KvHzdY*:G|F[2$@Bv &alH1JS;N$Yl}P GLFrI/-붩b*҉K d6mnQ^݂ Af",RzS *&ֹ0ف|&,sYİ)f -i/Cqc(g=s*6E@0zS`z*fDNʔIgy8bT]7ؚ +k1nDzU@ĠA {V(XKi{颎%pP3z42_R֩ ex|x?&e ǫz)Ŧ (8c(b wJPu˔y9,Xj^VJچN77NI^@1viᵺSm7j^Uq[Z#`ԩלvGy= ܖ46c  =z?2^jnVlD_VrBS4QNTh49KEM"5 SpI[*< Ϩ,<O *V2wT $$0yU?9f 9&xq6LtvKި ؏=8 {>fG(܄}~?x~ #opS?* Vċ |;;qğ?)O!KR~T{${%{G!^A 8xYGRrp?EBl_|]Yfs*>TJ@FR0JJ%].DRhD Tb cD Tb ohϳdς09݉L`oW`bO>܅?5Ћ."(ٯJV}wa{wlGՈc"qR"0[zO+˜P*Nc@尬\ T*|-@y I@@o* TyT@'=GeϏoVVF V|_lG[k `Οqw?{zWu!''4mhxFMm)y/|]LS7wѵM;ؙ+h*~Ĭ|^,G[=%m~~r~[F7-G6O0{usW1ͽ??PK ZR=|QHorg/racob/com/TypeLib.classT]se~^nI`BP+llШ6JHגrㅳ![ܖfǭ//LigpFs^H`|9yyߗ tT,|I차Up[%m;hbŁC_ 0v7fnv* Du<:fhXW̓CIQ9H.F뎱WޭǸ@7Rwfo:RNoK j;H뛽3ļ:vvmgʍݴ c֠_C+ŜmYyԷ5s`#޷6upG{Rjxj5#⪜Y=sD"HU&}F-$-=TQ..:…"B]˅b6/4I޹ȹ5.Pv'㙞 B3,ϥPl@$ S˩O5R0J|rU4dyhjx) d5"b)`` :5RpnSa 7~މ9Dqww/m!ZaMT,ROO_ iʿJ6mFe_:UT[$&aI=;BH>BXOGGQ=!&ɼK!JLT$i!]y2c| ?[8$-!,-f֊Dg'IgPZǚ?O͕y"ʲ .ec\h>{!e%E%frOWIh"曣2}qʺuZ"OC_ пO4O%&5B'⣀Ùb=ΡśűOb'5@J僖 :qn6m 8NܱYBޓ%fv^5yrB{N^\ssPK ZR= Eeorg/racob/com/VarDesc.classu[OAϴ[zaR xk+P@T[dv[ٖ.g?HL|0>lfho ۠ RF KLB\ӥS` `Ln=իX ;\QR\UZYP )nedf5E+ 92HSՠ\YdEsû]Wu5f$zY"P 2=PIJ‡ל7CifcӒz-mj9M7"X-jFɔ )F+&3yJ'/gu R3֮fjfbuvdžU2wZN-vK* }f[iEjwLޮY 7[zhԭ# &S/Åʠi|X}ѩ9 ^s6!*: [ū5 Nyժg ssW`WO~x1z0,r<|q8 '8Fq< /"x 9^A^C!? rrP~rG4|UOLǓSi3,>ˏT|A\Zߌ0>Zź- #hA_|Ƣԁƥ5j+뛨iHD?6!&H,PbBkb6Sء 'eU ]yX_k𐍐/p9)աTSݛHZ{u'h[jm|x,:!Obp(ܔVHZܺ*&#RHwH#/ŴdZ2E;eHR%H4JRh / &u*$)]UC[VbeAY/VFv U"Q(3-ʪ/VTUjVUZSU˪ZSe*k2:)֙V-fdJVIR!vS08[!qKҖzrZF"uqt\PE3]X.wQ$GؗtMumBgS.%BaF)qj0Kf1sz0tHݸWFX̍5$RNEB8;ֻÉP78W1%On Z"+ EzzN"$$N2Mq*$#ad ,KnΥ@vm]ݻ$ւ_gUv GJb6PBCwUi4,̞H:Č"ZTprIg-͒ ,V!@bq|UEjXuN,;̱Zۙmo3]&F[@pOHW{8^A.1>K`3mF84u=]0R{U19Kk"¿닷k#STfc x< Y|obKk_G'4 ZǬ*-KE^!?)qJI ŗCr+OlX2[&M Ģ]љ@#U-ǀy^4p1%HYKI\ U|i8@/f#G,6_ dM4pN4 U <5M|S33p$ |RKO([d}6644׷/i0],3=<9T8nH^`㨅 ?G2x3)>̧{WU(Sx>SidAI8^f&7dXX 0HΊ[^-9fj4̋@(EFenF̥*4g4KWGcgGEͤUgU4zKVFoJ9<T`GaRu-gˆt="A6]sFc:Xkx2`??5zkLk~e[69p6ÝUw^M[i4K)st[,&O,Dcg6S7-IG-MٌV3mM.kN`͑ټ:̕j:?^I.r[;8B/ )XlAɗXr]NM*ҋ;0d.e tu` 'puF+XOMn"yMH&|3ɷ[Il|M;l$e&yM{m}$o&?@6y;m.wH~& HWbp-QGtEVphA#P7k?Kmo\,E!gBuPH>fGHDI(n1ɠf6 <;<&KhPPKrZ=APSC7*81L;I1ޑ2vR[(8糆wi(Z< 3|I _Iwz;!M |F}߁Ψ'[ WdЁu߉6#zd'Te 9L咩2SaO$| w<@6Ι 9k9xU@Kn?q6 މ>ҕg}<{N%\9{މ~ѕz80lj+28Y;q~vk̫e 9%{}UG*4+kf[n9 RBsSKlZ=' 7OY $gz܆>&`Z&th4C rɟ3٩IvLgw1dxvigLcw#)ddwnN:ٕS@&+-  }T>C\{C0ofV5iDГV"}ߙYϨ1‘ NpGRkW 5-A_ݛY`1fQb j诳Bh Ӣ|h(Eԓ-~*/cxE niO~YGyo<`]%ۂ]I J|8נ_C oڜasNL!iygfPEz}fLf(&-R.ݞi6~6*d;o Q8Kx>.KۦmmjxrlpJO.n?çY_a98%)^(PkQ%VI%z 3DS[NNa2$04|*ygUrF0ΧI`܈\q.H9+h` :Z9SAWNMm5t^$t$ЕÁ?O-'EI[v{ ʅˮNq0YͫoAh'sHk1?N<*<@\98Mpl>Ux]h~,ҕy2I(E@Y|KMǜg Q0gtUZUT0[kɷ(ʘXPRI2Yf2YfRftd[&.&eu3y2l[&g,Ln&GY&n&>$b_[&}n&-5n&[-L.Lq3 Y&n&-sLƖ3[M+*s=X_5T-\%>rد\o)WX\'( xr#ޭ/F%_Yܪ,U((+;Ǖϔ{ \'fQ|Mt:um/*.RF*}4h؝D*5,a,&_b2.5)^4U kM omz-\Lhx!,rA#G@ȳVxK<4="ҹ BA+ `zl2o3VX^8*Æu@v+֬w-o:_ Ǜ*ZFOWg&U0aMb 4O":uEB!%"w&.]ڱd6C5X9U&rO!~Ӈ84jRK^ .6`q;hGCcPz#uM> J{B!I ]hWX%o(52NyY{ۖdImN/^ f>Xc br6|ƺt=vK+nъ0]CLbPK AR=g(org/racob/com/VariantTest.classZ{|T?g&LB HHH $Wo&7dnP 睊6jVnVۮnwۺm]wfBh?=|DmѿehK?ǿC!gszS()K~>zO"*~#l4~/|G?͠w'GiE'5@|t:>O"}8J$b5c,bS8q|dA?ii-C9Bcc}]J>#WjVuQj^q4>KH}I5ոNz?8|.oqP5m>4q Q{c4l7q=f-LѨg:# LޢmLUV465fh[koa!cjk+!>ik3]ΘODl7 d@uZkKtZvjoLJƨm1pYgNjU2&O~P̔Rq.I& 7hfd$' &@X, g Vgegs*3b}x̚pp2&@w!xkĽ`fZ㚈e`etA/||q?<źD8b̡04DEZa2umΔ#u-UAXaV7=ntN޴J #^,=β"h-%'!9I(4[1E p7Th7T^lb@TdRK%J(^=WFhU G/= .]+W~窓T<FՊmP[UbwG3W5L%D[cVW^m٦%gVlk]eB6Ji@zsBV*[kEtӻv;fo j KҨ z".vqQpp.sص]lQ]MI{mK"j;HvE:J .z+ Z}bE1 _iBNO#'>03m[6'B!D*U('7"ԭi mCnɔPխz`U#,Htr9;YT)>o/xт/Mhkqv(H%p#FV 1(F!}KE\8*Q3]V9@f!?$Xkql#')aqǖ #vW$*f'mm ?RLYdb̌GLSbr<> ӒS1xAaZ9IRL<(Inc=&d,,;k4=C&,짬>yIFK+RG#ichl8<0\K(o&:Bh2*FūjJdMihz^?mf4>ұOaP"6*l6dGќڡDl4(w.ϫu: -{^.R%~~z 2C$d@xy3O+]̫NLN4iTAi5T$OQ E;`- -⵴rE+Ni?G :ߦ5 TA=TYNZ,B/ֹ.}tzrҝ] :Ñ谭JKյ%>:s{t],<&iJӨ ki'E x.Qp'K‰ '$*8!E )`?V&\=^~rڦ|@2Kf r4 *ߢGhZj'4HG5rR'dspA>:ۅɂuij{^PTt%-h%F_ n7"n'VznWoJKA%2 ҷ+;Wk #zlϓsg)'9GGRO9$_S[+\Q21T'N̸ʓi=3>wsi֏_"s>V8aS2F Oc1;\#G8(хq\4T@:v<$z/q ר9j"~*.R |ll9q T>#$gL tq?}.utzi$@3RI`>ok op`4dSpx{qzP>{"f.l":q* 3)Y(on+,t)C ]|RA'P)>'d$bd\7}P)wg0Oj8uQI?uˠ钊$.\PUQ>zSRiH6WjYYxeQgeV\ȷJ鳂3('Ur㈣ԌlkSBͥxz$r%[AFN:- er@^R8nIlW\&Lup)2 O_YITvSڧt3ZKӋt _|;8*(D $̓ Rx:T3i+tɳPn.xtv^e)RtzKUa 7q+C~Bu~O{$pydڢ>^J u޻ʻz&L_4@,oHުb)i/Չ-348/˨&CEC|Y|%%]^ut%_O AzoS1t){|h^E9Yu% -y0%+ B|>r>'?xW~Dr2=`j ~%PK ZR=r  $org/racob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@*$00 Ej[k_V*P-eV׵պ]kku_uݢ{<&4|sw>ӧ{R)O?3g`'t~|0n}(¿E/~~tn~c:b}3Cito;^3?^au]Q?0/xÇ7]ՇNp } 9ûT 7t#ú!S!I^H tݤPW& t5Ƒ"]0Eze~RJu5+3t.a&M&庪dWf{eW^9\r >g^JWU%BWN{eR,2 ^`rȅ H Yz=Rj!0RAas6lhŬhW]wn YxaeۚW5 J[wX~+1[a:6e(VVmxVG{3  :0!%n+lʽ ķm¡x(8ț'uǂV}90rCQx01rk'a}ŔFYSX.Jc۷GcqSe.y2p%TplFA+b2s*1CQSZM\&xzBqW e6&g\9'vP$j&cíh1} 3&zQn2Ì!n6[MO|Tn3v) CPNe~jE)'Uw)O w)Ϛ9'X2r2`{祅4hp*88&^ ĂX$swoʽZ07#`n )׌`۴)D#|0`BCAho`E+oؗ(\(r`'Rgc5הT Y&]lvt|lWEMƍz`Ad(V=)zG> _TmeG :>Kb9^bMvUݯκV`Aw#1,yixbMwauW+!S˗MyP_Gݚf+:*<,SoqLKlru|yWٲE۷oPMծvUtsc0F>EOm=vI\֫m&Z56jFt 386F3=8΁dqгƣOǓ=AO䲱@0ң3Wu8 ]wM2]-}R;IH 6tKfFdA :S@q[q|1ʊUO\e9ВŚ_Dj0zGU:ѻWWut^̳]CVxpuxOh{)[tMIr!CZ'$&AǮ+A_߫^lFū\YK+0vO<&Ɔ;Ll$q)To;^T9k:򙝌t:%CS&+T1H>rU-Rp*(egKRF儿*T':@gY`ik\0죇Q^Ӎ j8A=}DJJ|?ΧcR1ŖOǟGG_?_ 29V&O:K'Wf=$$Oåiqqŝh]ɣ:C5~Oߓ}ҾZ;:ME1FHk 4c.Z0 /p֣WvۈkfB'֠X$!GwaItYtURɸ=^Ob!$a4b\/1DFD{G1$Op~{)앟&;_Fu>*~ qJ8lحqG _ʃ0݅=I4q?֜Qn",f=L(ạ_ƃL*9a~ރJ$Zl97;5'QfKvf1u!ќw E8$rAܕr9@}z]^$y 3JL:Q-IQs9WVh'Ӛ{IE(XPjߗ@}F̤IAtItA*N n u:o7Pذ"4 0pMh[h9M.e=[v{ްN;Wڵud~\6TŶEkGqέhy(|WAvkthv(6)x vz'[FUWj%WRkd7؍ߊz+0LM o1Gc;x ߧ bO{$J1~*~UDpvXba`Oeih&JN=PA&͵} b;rF5Iƾ诈5.JpKh1L@jlEl }mlp˖EW$nf)p=Տy;(f'IBDNN ~J}ԓ)D/a4$}H.Kp8e7]_@UOU#In)ϵ<di$asL_Q5J?Tan|U9UTM4T]1]RK$;T 'qR$5[_Wo1@a9-0Ï,gmzs*cs&+|PD)D6a7SBK5!$Ef-Ҟ'PK AR=org/racob/test/PK AR=$(!org/racob/test/BaseTestCase.classWkS~.H,kCX|AsuBvq` l|S@-IMzu/6qӴ)NgS3 IJbYÚLy%|xN 2.%P\N0QO#"f̉)F,@ .*K)/:_AY\I` V<9__N+ +~S~K[w ^Pb+%/Kh8fڦ\B笄S0$̙1V^1I}Ƣ$suVwM I؟sٌ睙ox~uPBgS%(:*lgɦb,Pܼ~EX==7i)u\*6Oz~)B%4 _YßKqv|"%qO]- {{'|״g GLIgY9e7ϰvo5 Y O˖n%kin?/Rg_^ň9m@^BK`)(Q]kə3HZۆ:i0Oxߓp 3킳mC:_E"Oy#,фB +͖ƠW$%<:CUH8?Cd!UOLn\,ˌDЗs/d!1d.haѪGp mwa+~~N~_“#: ڌyyhW4YmH|-ohINQD{tyyxU ?f͂5X4,|Gs˶4EL;Й=5H_=dHŏqͤ'9~!*~kdqsINM+trsgg5㺊_ 7T-d_I-`ofC"f7甭f;6ch6Q%iIDuf8qV4`-h ZW W YP+OV)xQ?cTDU sN>+|WşDV1D*nrBHWZwdػ|f.-w!ղj<&5%# ^4E3jAL lm֋۹ɋ#'] r6z/ {t]dbVu TxE}FjNf> } zd Z)oEmOCw9]іēeӇeسbe\w;Od3~VI kNtnCFkwo9(S.mvM!^_Ki $1~O1[nG6? x Q>n!J2~7ИKʼX'JX}2N4BC3KD^ |jm#8J6z4> Ē'e sX%'vlDuFn;HBIZD؍z(G鈪XquQW@ MRP5$-khz$Ƥ:vMXk| bv-J&װ;5YC+ڮ3=\B,o֧[.dBjRhR#۰7J~S љjX BV;rYJ^ 9(sq`)I!f G Ē}'I!ʤnXz#_qɷvh{@G$erj)9IAo zj@޾÷p? i$ f]X}˄}<ZVn-c'Ƃp,|zfR*mZMEfzdV1BUY =`I0d0lMNBdLPm 0o=TcW_k W(%躞]Zoލ8MLLJbHpƧuS o`??& 6}nUӕdq6Jv:J6,Luwa͈49PK AR=org/racob/test/errors/PK AR=3a9,org/racob/test/errors/UnicodeErrorTest.classTWG&Ye]P"`UZ *YkmOچbm h2Ags_}%x9}C ('BkN2w~s3?(\v4ӯ|bl\q0 n{˅f6|k`E6J C6?`tM0.K%*֚VZ<ysGҬwVҐ1CzP@DG%C[0d8k;RSN"J1K"yx&tkE(ډԊv)Cn RnbR^[+C5vZ4uJoU=&TuW>[\;ܪDXF cp䑎j3nqa[l5N=Xn B{ i~҈ss]<|oHO,ñ~-;Ybz< JTW\& S5'L PeTHSCT?*1XH, jR6+?QHE\~ wϨp7HR"k&m0oM]:ܻg5J'ѻRċԢ+8&VNz2)d+8MWis'izLYOw,oyn*_ t1+rlCrkz77~.%E.1vٴi 8;JwꛂOIZRUӸL};&pGQYeg?] QMKy;f6뵉3F@,;RPK AR=org/racob/test/events/PK AR=D6org/racob/test/events/ExcelEventTest$ExcelEvents.classSkOA=m <}U 屈oh$? i鴁~TD?xg!L;s;~ `O8l]c& wPHÂcvc®Ixr06CW FB-k^êb E!)%ZO4Eh–/_%VP9bl%5ؼ* %Fm]U+StLrGZ+edE MeTow>ת_ռHjhSpdM U^5p]5Ʋ ֑*WTC♴C9d*sqi=&\t#஋{0 -es L4LEZ7R%shܦ [a'/W" ^on0q[T7j"e8ٴYC,u~nJËF/>^PNk_alB}8/ӈQ|RTs* . Y!\=D`)Ft܃"Q-$1s.|H0>Ed6dFd,eȱz#KQ=)E?PK AR=RM<*org/racob/test/events/ExcelEventTest.classXy|IzDDBH"N! b@4]e2mڤ =iwýVvcH[& WM߬$,2?{]7Ђ*؍aqBƈWȸ[I T U xu5k$VA e+dNp/&攂 ވ7xEiѿUŃ2.!N»e>? 2>$2Qq2>!Bاd|Z>#B$|^F<"㬌G /H| y c /KxLA  vhx\W$|UjZO$xuNA&ci=4l\YIPn37n?M+v+{tI$v z9<넸+4V71,TwpRqsd:e# -Xe#d&N#ѝD%6_6Ź0G 0,׵xdi5$S~TCi Mv.d9[ GLڸŠœ"Zۻ0iwCv 2R?`XUfpa~0-do2.GO3G~/&B ü*i7g-3"Pr>u WgZՙӄY f - fUE:%9R &ft Zg`H#{pHXk{sRm )&, U|$lN莜Nc%o1H=XgqYwT|O /A!ŹE*~ɤŀ)%ΈFRE1KQ"(~NXE\dhni+p#|X4҄~u{hX/Q.Yn;bﰞq0KR6PIk-'"mMd|e] Uieb 7⢑G5]D`;'kX3chxGx@r[^<;>XV]54[%,Q;Hn ɐmR0o." ">2 1Rl7@bTPR!TNBv19nʡݭDt+PPK AR=vFQ"org/racob/test/events/IETest.classU][G~lܰ, E i#a[Z (P`&ɐ,lvf_}lO{ًS{fC"Ɣ9sμs1??2&R&cz'FpCaZg0#99ܔ|?u,۝X E*rY+RKL NyêԬɫаaCALx;Um8ĔↂHu+pҶ˗rYsh/噳|[ʇ(ل<峼}ᮨZY{?p\gOVee٢bBn%F祿 yaQ-~P08+\rk@<^  AXsVP0v,!ugo/JJ&勼x JWȄQZW, QIYV5,G5RΘkM `¶ @%$UG-uHLY5GG,(\3p ELޠ^V5 ):.T [ԳVWZʄ5dc~h(RamVѪy3~GѺ٫ ^Iz۞u/(e;Ji7&:>o8?j,2+V{^Oq*Rr\E"uHgwQo,f.z''[ȯdK^$tzhҚwIGV@bJ"3:#}̺ڧf~D::dFLJ>1q1O4!"x>N,_MKmP"rP۠tȗ$_)zrb\N֠qO_R@>N35Ej8{sG ~ ba1D Uy`yuÔSN2I$WHn\F"iN&ܤ-JmzG!'`SyqyBQJ77z5\Y w_PK AR=D>֙Gorg/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classVkhU=lv'ͣiV֦vmlM6_l&&oWbAA" (  7ݝY%do=Μ|ׇ؈71UjHdal*Apи<4#4cr,[yvw])j]8Ć5S2ә4u-6؟ٶ.Nrh692!C[7o1R_\I3C̆q&q"CJJU4vga` e%A-זMWLM(*Ō:L)X=534%L 1I3ruajEpfɲ֫(dS†%nyqϫ!Y{B2UruA0}@AS4O]2$EJ T_ȞR+٬ :Dx,>ɖIT>Ks)]33PYRt/ˈ21mh xAWUEae!0F5p3ݢVf(IˉH&u Ǫy FyW^94 3S3ܨ#r\3uYDl(]c<"hq 41#c>[,H0=RyQ90R*K,oآUlHCz))R͖qI\TD)mIWSl@4]Q{VH$ :x24tLo`iJG I: <s!<BxF7+^8p,!WHZr h'8,/LaǑ (;\yŽ-;mň}N6 8Kf3dAsnX2!ש=2lY hϋƣy;W : H j&WJa1;2Ql~ %O^Jj:RTt:1IfɒL_ B.nj6r &)cr$I ,EwV⫏kL5!䌙D绣ZcXxV]&r<Κh ^\E\[ h :Bkhv Y5P갖~Z:q`"s =h0G)7G[}3}6eZg6eiΠ6ʴxhG߼y[=zxOV*ġ6(6ura%N;|W_SW3qU5'ۧmڼGhᡨwa",3$j&-5\oF>s6a[O~Ir|rllΓӓkpwبO!QbOo;v}l -)wKKl-ߓ VWCVRkj.ָ㐪մR5 VWN_Ryz\j-#5azs$b.8PK AR=0 u 3org/racob/test/events/IETestActiveProxyThread.classW]tT 7FVL hB!$IB K Pjov'K6^ bVEժVkjЇzއ>xSMiKS?_`ޏv 1A)P66D`D#Ș π &N60Uo,S71aZNIg v3&R'L|ē&RRfiϚ`9M/$e X#Z&nYZ |&pڹ2l3^ V8I[i@wE~hG~pk*lvdǞ}aûsN&%k 6,\ ^;L[9~oZ \K.BslBS8'()u˅Ћ=o$t@2N6NWKa0ίPM)yTiZ\ ױ_`͍\{CY|Cԁ7{ 30&"wB&iJe;d=\F<5aRm&ښ0_ K?e`g." Q^Haxö2c97t2Sr2)ɗiSj.<-_`I٬%W\ʕh:(3ʘŻ[e=e%- IkY;Y,]]ZZT51<P} - Q`RDTNjryH!UGh1 HJaImK@1;oYmm^$pkBƖ-Q~e=PWBX'xIVe3R*QV;7"=VBJiU Sd.hٌ+G(,b" 5'Յm{𿇣l#[ w^J\\YCJGVc9+`tӨA@j Qc@ji./]5SX]5[ӈNnNbuC6]3O噣kIĻgwLaa5kTOkwjwi4gH_4*E/RĹu==hLM$]Fgk#8xY}s|廫ߩ6WQh7>|jznθqc74F^ _Nğg[/)*{8[ACm(Έp?cE_G3]nF@#b8~ t| yǓxau.axD4p0Ic| $_qY|sDO_g:cb#NMs-k\ǽxO ϊω3x]>$Ms`Uk1\o8s5Jiia5[A5E+{*ĕB&Urc.Պ׸sQe0pA{L l6 Ks~XmlV9Z[ͣ:ῌ|7,PK AR=Q{.org/racob/test/events/IETestActiveXProxy.classUWG$,U( Ukkk"h&EunE|m>s9}o}c{j9'3~wib: \H#.R 'gಁ8 ]m5-~u|~օ\7B^[nq |yMzR]gHdk ɼ_ VA]|kXy]3E1LUj71f L,capVM|]`Qҫ΅ҭތ~ :g*Kh`5hS1D%_cmuwM|{&Nq+rH=Äꆲgت 8XM"Jv=̛ >oN ٵ:~DTdtR!42s)|4wv;L5\!4ԙ&A7+X<ҷW(5N^ Mg k6{@}z$0B3{;kTZ5KoהHZr=t>'ZTnK3;]h?ivCC'Pt'i4z:5u$vF{jaiݔҼsڼA/m5cNuϮ^B ԔO:cҞ04Ǒ4W3r嬶5W*ؚ#oR~[MWlyJ%,d]ƛX",ҥ5i-eQ7}ROkʶ-n]n|V.͂LC͘m)#cfe\J1OWtWAgR8ܕ1s!~$gY?w-#O(K۽Vz|Ŗ,噼Jɫnݭ3F\OE&kU켜=fgh/iK'[EN l&R#(Hf^,$*q5k*;*u M4@AxZl;*Wq({PωBSb7\溦5SF)Ph?._o{}Cc^_lD-5}U덆]}Ȫ'(:Rgk$5L-5}Cm$µQvNfZKz׻i"{qeViFRi.Mj%,œL=RC֐Hy 6l(YvfC `[radZUMP,w~1 >mޠ+$~vxA(|4܆nj^>U>  XG swo bA8#wW٧rtR'4XV#y%7CC0&3=!{?3y8//2`0F`3اX@f/c!L09LӬ1GrfxdP{#M{~>~ qrBY2O0_y̋! d̉B0m2+C0oy39;B0?'K;C0$'B0&Cm׼J|PK AR=-(org/racob/test/events/IETestThread.classW[XvauPY)4ڊ - SDlHEQa#:; 5&iIKn5$hhLOA4L*x ұN(S2w+0g?TN}bȅ@5|S,@V %-eeH/ʂިh@z0WiyhXʠx|oO;a)i;LsU&@ i>'LwX ?cَ$/xzL?/=Vk⚆ (D11Ȥq儙=YBUn/gz^_&e7;HWC:ʨaNYAwW.ԍ10wV1]k,FfIǯ9^h:ފ%m+iifv^3o  |:_CyIʶ->`8SZ˕ .-9RS:LOSsjP<iJ"zm)ksma{қl7[*g3nl|o:9۵7RU0ϓ{U´#eJZx}2L,2%lِޒDh)&?jj)ްΗ,w^#|jN<=RQCT\E*WH-.QաnQ-Rͬ4C>O"|zv ܌ȟ)F(.6quƵQ-Uq:X4*^24X9īpF|Vſxr9^A8VtҧZDZ:jf /Go)l)*+*+| ˣeEinrˤPZ1OkC(Olea]cF>D![W3#Z) +^ྼaD.b"ԄKcNzC7P"oZ::;Ge1| t7kWD퇘wC,Z=~N\bkIQuvNP$VQy58Ї'0Ӥ8Kɳ;n< B(槪sϋ8^q^:m]-^w%Qv]:yw#<$^8.=xGM ?U<xVf.q߃6zxG%~}hgTzysq(!bĿ &'"GCRV #1rI$rwD9NDn0ÑFw;([qůU:PK AR=J>i4org/racob/test/events/WordEventTest$WordEvents.classSmOA~*G)&$ 6B aem+5$Q٣Q^J3X"9\D-0C f>~wr9+Eي6 Hl(B$&z 2.S3}P,)ɐYё`H%Z0|ABExc1(1*%J' u,g8RG_)V>6\uk/=Wq2RD;2N RUn 0~Z[-Sdڕ#e,8l>.{}, d;EK6"h Q%xotlIOI4N|,Ow桇G>㉇ k,ђV5nVU?1 ⺗XӁnYуIVKqfSaǸJ'L)pH#y 5PDWFa G^y72hnCϓDzw>>W-=y,(SCƻ(O lBao;Ȳ/`068:iTM~PK AR=~ )org/racob/test/events/WordEventTest.classVwU I:C (i-T,@h#|`%Od嶍m( >d>(8ur%?+tB}2GaG:y\7fDd'Q.UuSIc O3~%HaEe 0bb2<~>r` yD,)9̬<2 fs: 3WC-; YrrWSuRJVcQ 6/2+ iudWj<5[٩W=^07ִoqWн-IL(SZ-eٳ jtUN9/]7"7$Mr6>"Q:Y8<q lGqOY pVk(?bOy HLg5=u`;eG~0 w{EjݔĖ~xtb+&/jx;M &zOw2{x#de&^j}fH?K c _+BjH "W{I>j">epH xg88ϩC&Y|Mop`C|JOzzȘGY2=N)o#$wtۄ3 g"ljS/7U[TCQqA^a/VPK AR=org/racob/test/excel/PK AR=fHg 4org/racob/test/excel/ControllerTest$Controller.classX xTofy/ !$(0&!<ɼq%K[njn[V֥2"RmUJmXmMޛ$djss=wx@,.FbM|[qܭ9}O H.}Wql *A<n#*/Uq01iq?RqHrѓ*~r?S `QqX>GT\ByV/TRZzNůUFo;W+xA%4wl$AYJQqTɑUX?7&-VfV1 (v3 6{+k%룝qI3M/u1=YJFK-k("7i6FFOYzڨz 7 &9ꊦf8Lv%v2RV݈ь4c1#jXKLjT7 x#f]+iƍ6Nm1v=QOFeJHACZc z_hUR'b 5<2;Ls'#=1'fwhAijf"e _cUbHXQ3^M%xT>-V\vڈٝ0FZ2RCPEddɈG4#Gَxlfe 3r{6a\&`P ntؕ+0!"F@sc}3RhcHqPz dpɤ'rl B;)ǂ3j4 :?2$PO~h'8Ue(5vLLz'n8E=n(u͕4]CP4`i؄a30Bvc"(@;y417HĢ,U12D1`S41FhTe9IqE51N)\y &=ЂP$M$& r)*2%ۙl}2bLC,G^隨'3#&f@2^h1S`cJ 1COU51Kj8kLUqXIzc&~wb~̛6l4Q-*伫},\:5m;vk0U[F 5uzw-tffx2BQ֭P4!BX-f $B#j51WI_vB A Ȃأb&B8U~M&N%D2ګ[FȮ]I>yFk|^ Si"^EA7tdPg=ː0eNZv%]?~da 8o$Am)B,c};U3aaw5EisaM #i!(xܳ3wY͈|7^2}TAFmZ֘_OZgj9#^XZ`k}jj3x'GmC`2*M )*< Nt(_ C^mC8gv\륥mF9ngo hu>>m5@l9(bl*iaB{+k!`ϜFV;+]+R2p>d~vQkTJ<-o\=' 5XF@Fc0&t q~wU2Ecu0xnBQG~h[}R,QZF0q oߏrO?ƫlcUQ!e=<)յ4Tvd~x0hlU69_OUr|6k՞JfHK\{q;nkWש;\2T۳t$+TJ 2DvIJ(GqYTJH\n(m򳁟5 0!*xʇٓL |e2d0e: BRx[JvJq5&WHQ]Rt1+[cꎥc\@*ƋH$qjW& !D (x7 % JQ 3$^]D1*r<[ >[<5QOjKd=r(^ڇ1U;\LSy&!8K,Xic+}~?stE0FH+dOgaKX\؇aw-mmJ>f;e$wa6 PK AR=mG)org/racob/test/excel/ControllerTest.classmOA[ZZj hA-blE ƗcS;*L|H~(ii5›}wgv~$µ8rIDf<e.bד仡88U ߼z [7ط47Șoo +c }za!Zuði;isNGx]%cܳ midI+Ð z"+CHˍf`Kô#ٓHbWZ{ɝx(*uYⱭ #'XR 0ΖIuꦆ41 /84,▆۸a qpe +a SH1wEU/J3vwED2~D/td24Rsvw75n \aJ" 1TFoSC'-|?rD# %X(ubt RO3?@L/}$/$ \L lpDϐ8E0[͓W4?sD!#tW) Q7PK AR=org/racob/test/powerpoint/PK AR= i- Corg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classWoUnۙ-  rq,";j[ Aۙuv/h r*^_ vCƒOD_L 1wݶՇ~9_wz~ =Y(F- ҰUFu,@4Wh`[U;mx]& ehU 22:d LDKBT<؂)&cq![ o 3ox["#a}2+ۻ0!k ڴ;#n m.֌V]2ZSdeXaj1܊a3̮4V&?hD!̴CztRGmdHXWQ*5 މ󢰞!l ٕcMܪ1+͠,]Ӆ 3-9I`PrZ;auY1J+x&BS:[SOJfPMI;ɅIZkk*-{R'Q0(f ]$ezBxaְZҍ 1=-`Ôh=*!>P!:GRU,œ*S8 T1ɐUښef 8!ObS*N sj'`sɕbLJ3*✄* {s$HĦ,.1L0`ؼ?U\ a3圊/Jz80]#_`gx!ʴ'nZCiQꦏQ>rjeG7mnjA;ɩeAE($QLm:z1xY'ʔw4#qe>=Qw1{h*t_C6pCLE0fY1'[ZDG-Lh Ǣ!Q0hB «[0s-F>9rxknl':[ 6wLmMU0b䍳)8h2,$] lƣbhvάŤ< cw1#:KТ3D+S?_ i+s-JeѲE_G 󡄾;ĚSؔe %^H(#\2L@z+Ŕ+A&A!E; "t(Nk$|JsN+y}q TϺ uБHK Rӈ%wVYvQ"(A`n0C0'ܹ}lAy$Fw$s  E1u Sq'=eynO4RQ|+/Az6`r*EUb񨘖;7g%Ĥx}wao^^9W=pw}.ˢX;U{bN,&BX(Db4M؁=bYON.J_7J!zi$4Yl6)k%h}/$o]9' 4 )mHS1#8pS\38G?Fpq7x2*O'= >g8p?CG(~¥a;qE(-Ft/Q׎!ƚkRUlCF˚%(B7pq}px/"^ *ϡI9@D O >ZI; PK AR=org/racob/test/safearray/PK AR=Հ+I$1org/racob/test/safearray/SafeArrayBasicTest.classy`df1d#҄\ @b41 !"Kv6qw#/Zz^EZ5m=k֫d# f޼7ofxQhpvt2Nn6nwFCIw؏9k}:Et?'}s=cAntcl= % Yq=G8kӖ|"eHVn?qe#DJuf8~AOpINbOs\%'qïN/8E'䤗 ׽k,:~}o9V)N=oܛ\K䏜Ef⏿8鯜8;}uj4NS `8_,ȑ_*H7Áj#P/oRo 7FJx /:hԷ\Z;ZиXyc$ ~\Ho#Pe7  12XG;9뢑yqNI/P镆f :$dŠ&Ղm:6-Hp}6N:m 3b&OʤrUc$aP :\'5j. W.3NrqY$ CtPA\Vł&HG)&w4 o(5[t55IRK[cHN w7Xl51{Pds ,89xjjW\!c- Ń)J`($\Mu ҃a#7K oP:5/r]vF}݁͑ҥ2`Xe-fm F*Xӹnj7Mõ/HtJ ~'qf#?JdǶ.ڄ\P(9NTM3ի^UkmC,C'>RH]RJ]4o?>t+}1n2+f-T+>*(@qTn5 Ѡ&4y[-*T^-PU[Smnme{ Z~G9S\]ǡJwy ѣ'+4^G=_`I4&8!Jh*C+ O'S]**먘nzTFoQ9Gb<'W@)L ֩XTȒFo\Yy./ܝc(~ng190(NwNf{*i mS9cXUtN#/ȭ6 NgXDi<1^]^Gv^WɞU'7 )xtۋJ؋AUr5Lh-:,j|*Q-ђn&XhT-~h5C!iˇPeGW6IhIN0*A68ȡCWz94}poLppo:l$Ç(O(eJ☍:rʅ+NpU0x5\ Jl$U)Hz,$h9k:4H2$Uvɹ_ I7dL Ôt .DrDj:#f$%Gx~R2n8WlfL+0|`W.aڑ4lbO%LN͒IͤZ72)!!E#$>:7d;:|ۉ`y'Bv$IFB2FR8I(Hη;V@] jePW!VP+< мb3y$7JIF&~:MIQXSFj;V lÿmIP{>2U-^hn|r]>@ `!)#I9Hp%8ըCU4.ʡpM3f ܊{ O# Lwa w ty ";܄F l.,0rE"A~(3_$_r'^e]udxkjV_3"Z|`^1@K+x5oH`[3Ce "2? D^7'%*wYp&ʳbX3>}qͱ\"\bGKm[^w-~[֌VӌVղjN$>02(c$ʘD=W+\դu'`pO#R/{ enzv6Xl͓wʹ]Deg͵8_.9_kyCtױOZOM+iՈX@ h1`>Ovx} B|_.M;,r S+c`<Rייv4¦t`{jTGS5- EfVGt"٠|U_fuyqn+§u=q~rJd "E :1ֈ,$|h.ƌR+nRvmH]>i_E\Z>UZ}O[sdݜ{Ч0|h3i1~A~g-&9y3?E W"{#> K^,Wtν:J7tx "~#5GS톏j.ϼi/:bOeپK+K"Gě"yQѻ[2uw=:ט7;qE#]/ ?JO"g}UP?/>8./NXzqK+il#]!eׇ&JTjΟ|"ҽd;C‡,"r4\l/b^Rb+Т"F<#^6`TG[„HGxIW{s1HN}4lk vFF|}$F(v p,^ - :wcM̲ի0Em*BFC<ڸ8ɭŎu⨭s FӨJ6FMQ4jZB~ `Ǻ8X7K P3r(S:Y'qJ'poZ$#m7#ΦECބ`Dog!FKnŁ[nM­:pIYf J!C,-ܒDĒ19f7'ov5K]9Y[[db∅k,ha>c: ,b<]pmDF)ڴڼZ_6-q ۴شpNƵ6-V@6F;BBnny"v$R̦i5ZeU%=FZ4Dl"MQ%6E:SĦ ݌n)GCxh}qMPpiLѧ_g2* 7R}%vI$wHb`;oyMp{1O 'J;pzin"-eul_˽y9Pr>*\퐚-wi'pv$q csX<$kxYsF=¢eu4ٟs1vEEɊ+\QnLP$0Q&-eꖲzK*k a6ef9igX=4u9y˹-Ubr q?]qt=S3*f+۵\Texf џЍƀ7L~{F05 5,r!vg .ɅgLTRYbNs\N=RvJf@ Y+fVheղҟr1We+2υ8?\es\J g,U,W庖j V5X dןUZ@i M3;)WݘJ Gpjc#HRF٢1LA5G)\s[Kxn-mn,SJ$\bVD \A2ا^*rM(&V0Q)?؏Kl?V1O_lEYkn\F \!t!IF11,0؇J*vMͪ8&C=ϱI?0yIxxIXqj\7ZX5.;KX.\…שT*Ui*MERÝ$P.B\GNe&Z.ԅ[hnYډN_p'lM EE:=6FWL|U=^_ mO[ok+j[m7{}>><=Ga"xR{Oi„> ?/3z%~A}~7Y=;3 ?׷v<ߎ+ %(^яU=ZoL·͛Fex˘[q1v]62=^ٸS >4G 8w3, saf9Id"\@L2kgnt3Jf'fit-1m<8w!þ֬5鈙vk-k5G}:Ag[g3>Zsrׅ% sLM@׸ce>9#|L)`>,|^8Խ6%ku3uJԮBϛS0lwL=xSG_N,lKM\.jY c&0~kb&;؛8}DǺzS?k3! AŧeˑYb?Wįs }7u7nƽ։:7u` h0VAB!HC؅ -hB.Ĝ1q V76Åpbix]&` {؋}-]xЅo~=A6'q#68467r@`K*g~.2˂@t6oYG4xc0&S6Gux Ϗ7Ѩk~%e* d㍕xe< 7pmYCbI$)EBA֘  Xiη ~Ye ˷ZH>WK$4YՐ)qz]<).Y?D["+us$T4QI`k4&Ƭl $ I^J-v81'sqqHk.ݽkaYK9'Nx8NR)n Qf*ٛ+pgpփs8yJ󅷕򅛗tƚ -Z yM֑HYozpfO`,h31k؄0zڃN|S[-Le΃Kxrwl`k'ZٿATc*QE}:y\j x^dIU{cÃ%3.۶T s߃nx]|KB;WwCiʗZ_q`qR3}tgrlͳ0A9NiWJUTkUQYYX ]v|Qs<޹]7Ct7ϟ=!RB+z!ע }:r R1ebT%Sb(] pe5_lA؁Yyb!6vch,a(/,:ϑ@UױYOEL?S]}#$3yI'4xTE;+a9mr 4l 8,sqD\ƣR"[+pJށӲ Xgd {qAi̋ M-&Xj8V+*1UXgFUpAݏvt/]PɿA~xϪ#LӨSOAu\A@]&y7MhV?Fg07!hUf{lS-ت>& Tإaz lp@߄k׬ Vúm6ĕ8W:`UqLגד788wލA\\nC'+>}8Iy<7$j4VHj-Qy=}̹x?']m((wkPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classUSW.IuY*Ai][jڪ $HKMXfl;}c:3}Ӈ>3mi!sw=;n~_\,T1a#ㆂ1`LEZ[RW1!rT)wdLkh59宊{*f1=TW0 輀4=n0g:5+>a۵%{io8]+W-`jYd:soKyG V@*ob*AjXORyFir,jh8%ays5@yQ@WA?.p=ɕQK0N{n-\n J^ F>0K͵+彚_&lY[Q_qu|n:(` ?ݲ!2V<ߨ:Ēt|nfLq27؝ϓ%&/咎e0[[sȪ߫=٣c:2#af|ೞ,[>U 3mj|kt–CHnLy#8:*X8̐CK:?Vy`ol/u52+CP֤䐍d0C_ګVL ta#d$VZ^1+]c^R{HT.kkl?7T;]dfVS$#s wӀap?G'S5){wE9ϵ1T^\m :mϗhGFl"J<Z\d B:oKܿhg4Z;ohO2ߗhDsжS::8?/Nxw^.]f׃kkqDB.nE6IwPƦ c#`>w я *EZ vtDïSJP^A,TlRg|+awPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classVyWU=aJ M[Jt[]Bi@[4PڤPDC2M$Lj*KUZ.jVM9bT?/_#7HC޻{o~營l /`@1 Eq$lý8.("E%,C@NN ("$BI#""|KX~1>?ȇ8" <)bT9󔈇aE! w O xg%49^𢀗JhQ`q3Xz@e(hQ7V>e8LG+~% jCG]qů 5a UǕS./QהqnesM^iE˕sSK"R/|P@/KȰP,P*JL:J?*9* xf1Cӣh4'7Q==HLQtx ?ңLL,,타W(WO~<m<ͰC2TcWxU``p^kx]2.MBʨȠ$-os3롘Js3wp>> dp vCY:u/PXIOUM-M2> +*^#EI-'i >es Я+\&G@fWW' %n8X<_1ȜF3J׸RVa-u*esƇpNjT}~+jjcӈ2=QV)f[? ;#M3ueGP"ׄYo) 7ȶ.'/> 0lB \s{*a9`THl Bt&DJVtTR{I6€ c }}t!(A0><8/ȣBE/8}wUEGvu;ԽH%FwO!o 3Zgp)/zŰ̙wkH#{srD8өEח^sOZI;::lz˝y\ۚ*lacA=#98haO]E`vZhf4fdBV@+6klI@@~BѠrVO8u*&צ$&QΥ\Kmq^IUz-64$!)VէPj21mQYG* )8RX֚#e6n3[ Xff\J]y >k`KʚK'JY؜dn30K5E!2uB`&Dp@"RrRp \ƞb5ͦ= $vSlkX%| VHloR>OcWy3,f*HX;Ҹ;d `+%:\D=Ѐ?/ M̎l%v걋h@; 7AvݔI';.vUMopٟ1-^~<6NSaE耛3ij"XUBy>M*xMxwt~Pj 4$W!}##3M3.)EAQZ &HHcz_PK AR=org/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classV[lUNw3.NYZeb--R)e:;ۊxxy`bRmc>ᓉ`L^n97􇿿|axHA) ᐊ^ 㰊>G#Q 5܁ аFV11"萜-2TV0Nd%ܖVsrxJyRP0`Ttܝ^`=` TtZY0o:=FN^ñzJtNL8FOfMӎs)oꡬYJBHLs@_mes1rHfIf/FڵFÉnsvJ/jκX6C#m'XᦇZr]F+쒂5264\z/괏bi x/)x9Wp*W@(1o@^Wp:7pF頙6@,[dbCf6:'kҒf,kn0Ivq6e[ VftB&s mc;b0ޓ)Ui}i0>D}geknxIDeQrcrXV{ ,j5i,xvvK.Y{3أ1Rælt7ӌ~5+n!\3$aG)vZ𝭞'4xJ(2cXOr*crj&pg_!GuGld7Wkqf%U, 6iM—xpd)G˦X4qi\c/Go/^ǎG%e#6Ķ{}5H y9lg?' —؍ h&\f߿b$'b~!WW?kHB#"cX]b=vzST0ΓL*1-Ș3B\*u uEa~Fdݟ"@Kƨ=Y$K*y.}$ˤx~d0{|O2BױJnϻ9ɌoGAW\$[ΒPK AR=C 7org/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classUmSW~nvKQlC"b[*F `" Yam0N%NoND NL9yy=q8I|!LՏr!I´1 Qp3ruW=?ՠg5bN+XЏ)PAI UL(XRX n -z~M˫W78A M <7CD%$J!{p F\vFhLٸ4r\'!te1\ d[t\A^YQ.zY[2}G„LI螗RyZ@u]/ M}>d,gFWfUKs4(V e(3{66f^Yv#t<7/ وxttX'5}˾2:x\u#qgt9_aXXQ)</d,q%p~iΦĘޙ ^d[vɀkCh# 0Nf, gTO_EbR Q#Y^] yplX`l۬ߧ_,4k8w*oh巚O⇨+/m+<e{:kHz758Ïu)oFF ]! N@Ȼ!y#TJ㔌"ǯG?T6"B,+".Fe pL9pICpѓVr~6P]D )t__na`pL0(x e~9QLXfa<ױ*5O)]#E{ӢB[2:rV@1)?PK AR=@> )org/racob/test/vbscript/ScriptTest2.classV]pUn~a%4?(B)TR%ݒdfS?+0hGfgw|rttPڦS3={9=ܻ:6ᨎЧ?G:U4 x'CHĩU³Q! +||A gt*K!~T0c2J tl@*10@U"X9wPF_6+޴˼@>+khː@q++2#4GԄvLwb-qI3i\M佤]XRu,Fhf,mfS+sKIs-;KR,+Iyr^UڙU ˘p+"ȗO ϋ3CV>g1B0^A.!O`MيRQV̗毳*f+}4in4z.8IyR寙*ئ!c mwT[C8{s (`BEp-qx$՗ W5fu\aʋSң9Qo*[7kބa[nmJv`Z6_(X܊Ջؿ5rX| 5Is\ش 4z̼T^Jv1ǾX:3u8(MvǓhtE'JؚI8|Z=)&L.-JGlG@meY˜Ǿtk٩=F0ѲkP-p*b4'Fe*O5,EzLKYsY,u346]{ 1nJAl[8ꔠCG'B)Y)B9 m'EpM[X%"*oӨ |nzx 5E (Hkۊ#,\go 7|mnBc|'nNqMXNφmfRil\Q]AYأE4UЈFlgŤF7T ;XaDU*>]|IWԏVζѳnZ@#v{y' 68 KD%S6ʤB3" 4Hئ@yV=-$wm| vnn]奰[´)D\2Uǚ0$vAex%aH81=2E_O˖eZ\#9f20M⥜|{QbӎH´2`NaEz¡"'e=Fپ奾rc;+ǚ[]aSre˹"/\+xÝr\cn핦rya2X!8&6᫑/ZqV,ޥrW+. UH &\gʼ8B@x*35s iS7Z)WFq5X5 .m۳(m^ÚiD .22A,gQņ,* l\zFU$ reW4{ryNj)}w`WCPݣU -РJlCфJ/W^eP4t :7Qͱzț7P t51k 5~ZGFqt,(- L[L}I:Mw}Ou~ '~&IoNtS<ã*9]-rv_uk}yκ>9+5ĭCPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classV[WU J.-JS,V+ P!bN&00Lv-l}.,KwZrW4d>g}eN_~:p7"`0,cD;%cT˜wH0 2S0i )a% q; 1+]A>#qnJK$$m]3g4aeԲˠ_<axUƃfFLAA٧s|!ȗ****~@Cݲ.rşwi+PwDoT<gUSA}"}qI^.N{PKJ.$T|s4v1gM1|ĵ\O)~19tΤhw2\8AZx 俏! e?^:m%n?)ʥ29^'TGc z|H t2q5cN[zRЗ}4nÊQq/oP]J!QtL"Mqk]8Z'~KX8,.!Zs Q0ѪBw ־gN;*n\FLxUt=0 G D6Dz'%)dthWлO;PK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classVmWG~7l(TAъԚh\!,nv `mˇK~zN j4;w~;11O \2ъ1=\N#mS !+\5) PF `B˛LjyKM|/2R*1w &`*GcMEi`@UDn*2V|_FV"2h " y9YnbP _jR` 83;2OV* <]*u*q[`Ywy|W>J6%=Q-MؑW)52-OI&x* Wg˜dC%G*7iKfN]˹Fd\s #I4 ]Jh/+۹;nII/XfIY[e,ȑ`-ÀOPO,Xͤ άN O?0ECǭn[FV)9[Ǝet-Fٝ'إ9_A#k}+~ەׁ?Ntc7&1KgxhĻ`)C| 8`rw5y"B;LJ BI N@%1!?~_8%ңD&pE$'-DiÇJ~JY>}H?-8a#<NۑIH@vo1[$q:֭L b[j: PK AR=(YHorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classU[WUNL2 vUmSjk ZpDa$@KwZ$eI{go_9SWc1U|(F`L8&"N*"="´V0 Tb8K2/ry忬J>T@ŻJ ah+}7x93L' Mr>4鮍*~7`ٖbxi!tLʲt^IK97"U\zR>cD_H+fs4)-U94eA5PK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classVmsU~ni\l By X$m R@kol{@8SLȌ~+n--={syι_5|~381$O!%`g D4&33 3B11Gz`X$O1<]fm`΀-ۡԱ[9M9=y20cYt(@GT/aZ?[ޅ]E0}爼w g(]k)WZQWF*9<ߨʰbͺdKmSV1j< *A?'-'?_4ԗZnX<ÜKT:pcAqvBP @H$mw$KC-ziHNL6stGwvK ٶ9p =-lka;{ءԗw'4G{ii{sr~K۱4ӘSEEDez{8q~Zp}1P"9M^̓*Y mڿ{Dg~$hF36uC}oV[x;f '?Ca`I25lFS1{@þI]Z^֐;`/+:lPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classV]lUnݙn-'@Y*X݅JQu;;.T|bBb l5dLĄ>ٶ`6ssιw>^fi xFó:qBɓq Z$13lˆBB8E%_qNɗj4`ІM=GCjx5024CeՑ谀 qӒ'tTPNa1zFŝdbS1WX)UH;fލ%=1DѴk.e@YʨM%#VBy[L^;-i 28}%wde-v.UdJ 4KpreF:M/eV}2SnX9fˤ> #蔆Ni@.:io>Y.g[UC6,}gMͦCږYf8k/D5YzjG^͆K/I+:kӎ4\~0RT/c q3o)CvJ^ UUKU.DIxs;s֟Y%45R3$]\45i8[SH7O4MUoʶ;-kgh86ej#/PK AR=Ж1org/racob/test/vbscript/ScriptTestErrEvents.classQ]OA=ӯk[V K$bL)OCҦ/<ͮc!&,|?xgh"!u{sx&dO`Nʾg^MjCY2ƪy"D$1X" \$kT obmf܈T'ERF[>0!ndh! [2)ц?8U{Qy! C0QsܤHzt=8 B-ou#\}ۭ]/voPK AR=org/racob/test/windowsmedia/PK AR=-m"*org/racob/test/windowsmedia/WMPlayer.classS[OAf[, ԂUTp411Y"<-)w%`@dϙ9|sf43Ɛ4g``70jf) Qz,q&lMaHI_Dql!Y *ˑx^Eη]䜠 I?2&Վ1:AT#^m%jޓ~%ثy"jy"eޕP6&F{^0r/++6'M] 0N7<`Ȭ,JWq|[Aaߥ̕ҦN6q=glU{MEү.ե[$Ԏ(B=r V0 C<2,L[X4c8kb% sY=Sԉ]/{yxHC0Lxtě;BFA("02/r o`HW<N-X0޹>EC=^٤d*6f'i5p.$C 9K ${c:K7>4рE:Ⱦ5؇4h"L ,OP307R,Kihأ Fp%n&v-(PK ZR= AMETA-INF/PK YR=ѷ+META-INF/MANIFEST.MFPK ZR=ِy `META-INF/JacobVersion.propertiesPK ȉR=Aorg/PK ɉR= A9org/racob/PK AR=Aaorg/racob/activeX/PK AR=v;Ѿ y!(org/racob/activeX/ActiveXComponent.classPK AR=4n2.- org/racob/activeX/ActiveXDispatchEvents.classPK AR=?,.org/racob/activeX/ActiveXInvocationProxy.classPK AR=Aorg/racob/com/PK AR=I /org/racob/com/ActiveXComponentFactoryTest.classPK AR=8n_org/racob/com/Automation.classPK ZR=[K org/racob/com/ComException.classPK AR=..$"org/racob/com/ComFailException.classPK ZR=32%org/racob/com/ComThread.classPK ZR=ך[Pw)org/racob/com/Currency.classPK AR=7X!-org/racob/com/DateUtilities.classPK AR=:+s%0org/racob/com/DateUtilitiesTest.classPK ZR=spm@bH4org/racob/com/Dispatch.classPK ZR=g{ "Forg/racob/com/DispatchEvents.classPK AR=L4M4 &Jorg/racob/com/DispatchIdentifier.classPK AR=Yo-h)Porg/racob/com/DispatchNullProgramId.classPK AR=+vK!Rorg/racob/com/DispatchProxy.classPK AR=&t Torg/racob/com/DispatchTest.classPK AR=*-Uorg/racob/com/DispatchValidDispatchTest.classPK AR=a5!,Yorg/racob/com/Documentation.classPK ZR=ZZh,[org/racob/com/EnumVariant.classPK ZR=қ%y ]^org/racob/com/FuncDesc.classPK AR=8uborg/racob/com/IUnknown.classPK ZR=<. #forg/racob/com/InvocationProxy.classPK ZR=ʼn8 .:jorg/racob/com/InvocationProxyAllVariants.classPK AR=C0Sporg/racob/com/JacobDeadlockTest$TestThread.classPK AR=G%gtorg/racob/com/JacobDeadlockTest.classPK AR=o\"zxorg/racob/com/JacobException.classPK AR=SW#zorg/racob/com/JacobObjectTest.classPK AR= w$?|org/racob/com/JacobReleaseInfo.classPK AR=ᚹq !org/racob/com/LibraryLoader.classPK AR=nis%Vorg/racob/com/LibraryLoaderTest.classPK ZR=Ldorg/racob/com/MainSTA.classPK AR=EF5+org/racob/com/NotImplementedException.classPK ZR=5h.p)org/racob/com/Parameter.classPK ZR=OR[ԑorg/racob/com/Pointer.classPK ZR=zM(ٓorg/racob/com/PointerWeakReference.classPK ZR=ϦF|qorg/racob/com/ROT$1.classPK ZR=Porg/racob/com/ROT$2.classPK ZR=wN+ org/racob/com/ROT.classPK AR=Q5 +vorg/racob/com/ROT2Test$ROT2TestThread.classPK AR=d45org/racob/com/ROT2Test.classPK AR=` +corg/racob/com/ROT3Test$ROT3TestThread.classPK AR=3zorg/racob/com/ROT3Test.classPK AR=L[ org/racob/com/ROTTest.classPK ZR=Ձ*{org/racob/com/STA.classPK ZR==A ڽorg/racob/com/SafeArray.classPK ZR=X#8Vorg/racob/com/TypeInfo.classPK ZR=|QH]org/racob/com/TypeLib.classPK ZR= EeQorg/racob/com/VarDesc.classPK AR=#H*3org/racob/com/Variant.classPK AR=͉\#org/racob/com/VariantDateTest.classPK AR=51org/racob/com/VariantTest$VariantInitTestThread.classPK AR=g(org/racob/com/VariantTest.classPK ZR=r  $org/racob/com/VariantUtilities.classPK AR= DX (org/racob/com/VariantUtilitiesTest.classPK ZR=GH3#org/racob/com/VariantViaEvent.classPK AR=qQ]"(org/racob/com/WrongThreadException.classPK AR=ADorg/racob/test/PK AR=$(!qorg/racob/test/BaseTestCase.classPK AR=A'org/racob/test/errors/PK AR=3a9,'org/racob/test/errors/UnicodeErrorTest.classPK AR=Ag+org/racob/test/events/PK AR=D6+org/racob/test/events/ExcelEventTest$ExcelEvents.classPK AR=RM<*w.org/racob/test/events/ExcelEventTest.classPK AR=vFQ"v7org/racob/test/events/IETest.classPK AR=D>֙G<org/racob/test/events/IETestActiveProxyThread$IEEventsActiveProxy.classPK AR=0 u 3Corg/racob/test/events/IETestActiveProxyThread.classPK AR=Q{.Jorg/racob/test/events/IETestActiveXProxy.classPK AR=u^ 1Norg/racob/test/events/IETestThread$IEEvents.classPK AR=-(Sorg/racob/test/events/IETestThread.classPK AR=J>i4\org/racob/test/events/WordEventTest$WordEvents.classPK AR=~ )^org/racob/test/events/WordEventTest.classPK AR=Acorg/racob/test/excel/PK AR=fHg 4dorg/racob/test/excel/ControllerTest$Controller.classPK AR=mG)Iporg/racob/test/excel/ControllerTest.classPK AR=Asorg/racob/test/powerpoint/PK AR= i- CKsorg/racob/test/powerpoint/PowerpointTest$PowerpointTestThread.classPK AR=hX.yorg/racob/test/powerpoint/PowerpointTest.classPK AR=A~org/racob/test/safearray/PK AR=Հ+I$1)org/racob/test/safearray/SafeArrayBasicTest.classPK AR= K .0org/racob/test/safearray/SafeArrayContents.classPK AR=وv4org/racob/test/safearray/SafeArrayDispatchTest.classPK AR=E} ,ߟorg/racob/test/safearray/SafeArrayLeak.classPK AR=f !3org/racob/test/safearray/SafeArrayReleaseTest.classPK AR=ؠ<` 0org/racob/test/safearray/SafeArrayViaExcel.classPK AR=Aorg/racob/test/vbscript/PK AR=ø{E (org/racob/test/vbscript/ScriptTest.classPK AR=C 7porg/racob/test/vbscript/ScriptTest2$ScriptTestSTA.classPK AR=@> )korg/racob/test/vbscript/ScriptTest2.classPK AR=bForg/racob/test/vbscript/ScriptTest2ActiveX$ScriptTest2ActiveXSTA.classPK AR=yP 0org/racob/test/vbscript/ScriptTest2ActiveX.classPK AR=G U:org/racob/test/vbscript/ScriptTest3$ScriptTest3Inner.classPK AR=ˆSk)org/racob/test/vbscript/ScriptTest3.classPK AR=(YHnorg/racob/test/vbscript/ScriptTest3ActiveX$ScriptTest3ActiveXInner.classPK AR=@Ӈ0org/racob/test/vbscript/ScriptTest3ActiveX.classPK AR=& 8 /org/racob/test/vbscript/ScriptTestActiveX.classPK AR=Ж1Vorg/racob/test/vbscript/ScriptTestErrEvents.classPK AR=A;org/racob/test/windowsmedia/PK AR=-m"*uorg/racob/test/windowsmedia/WMPlayer.classPKjjV"*PK "[N== win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK OR=s6win32ole/Win32oleService.class1I ) *+ ,-. / ,01 23 4 5 6789: win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionorg/racob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK 1R=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK OR=+ㇰw)w)win32ole/win32ole.jarPK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK "[N=/0org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK fnN=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK fnN='l8'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJcom/jacob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK 1R=J5 racob.jarPK ΁O= META-INF/PK ́O=KMETA-INF/MANIFEST.MFP=k07ˤNf RI>' d$_;]LtwlN%[1af J*a˪/x <&5{L8D;ß)&ۧmB)iuUM w5J45*{Y?9/*gt)rytdc74G?%aq@3'*XW-Ž&y@Rle]PK ́O=|w META-INF/JacobVersion.propertiesSv+Q04UO.Q0204P042422Q5050ROMQN-)JXX)8Urgr%f$OJ-҅48h2LYfIjQb H9/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK pO=y com/jacob/com/FuncDesc.class}T[sT|A4:I!VJBBmYNʗR 8Jp-x3x?a=mEQ=ww$`ަAZ >>Wd 2u2 2M2-2M0ViVb( ̀ dЊI⬾7 Yx,^RkbIWM=hg>rp acw];9ۺ4b ZǶjށoP'fiN~?t vVEsyuPڦKX+E(UX/!9֭.+Ap}MI!]Еխsw;~۪tHǹb[')cVOS0/Df2Öx(#0_D J;}\N/K\,< W|x U8Ŀ7g}xѪ!"ȇo-ķ}>|}a(K_7|E ȋo5B*➏ ڧx ק_$6:6tsq) e#HHYaI)AJ$Go-pJ⣯(-`w{x} 9|dhh(hh8hX{4n{40w o'MxP͈XJ2C/B I(JNB%CȑPrtw/Ih 92ay\5tpBI6r*C,]P|laV1~dZ_l5^UPK 4`.=mgcom/jacob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;?}`'`xc_t,cEn*m7᱆oup,\֥Ʀc v]yjOG?}?)~~_cڞp29:4rN6%TЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXCYİ)f =i/Cqc彖(gX<s*6E@0zS`z*fDIʔfʗy8bT]7_ؚ +×k1iDzU@ĠA {V(XKi{H颎%P3z42٢,5 BIV ps@YKNsV:MnCTh{*3*ԈTa u" "g4\Fo*.|K RyxA*\& |G]L28M ^ucVʱлc"PaDZn:ιʻP݃/ðo9zM'#,!?'/8>oE(L#CG ߉⻤>-wHn)HGwXwD%Zĺ|!s}R<ON:?//($ϖWWԿc>DY?s>vx)ޕ%C5ֹk|=&_[lCm =?BxJRsAIH`FSPBD T"҅H*B4u!Jua,w!JwaMy[Y>DZ; m?A؇zqqYGG_*!}0E.¸/!eU#8"qQMR"頰Sé V b /?u^<^GJCY +l-ȱXEJ`1Xm E5dž[ßhm߁wbѸ8e:u-!7Thj|̧D/udl|`A@qLXa`llF`Gl|^%-At| P'L7Tɶ_'NXB,! p;/ۚI9\={Wf'OMM?PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK ΁O= AMETA-INF/PK ́O=K+META-INF/MANIFEST.MFPK ́O=|w `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK pO=y gOcom/jacob/com/FuncDesc.classPK 4`.=mgScom/jacob/com/IUnknown.classPK 5`.= #Wcom/jacob/com/InvocationProxy.classPK 5`.=qK .>[com/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["Vacom/jacob/com/JacobException.classPK 5`.=倥v$bcom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !gcom/jacob/com/LibraryLoader.classPK 5`.=`:ocom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=ln{qcom/jacob/com/Parameter.classPK ]/=s-^Y$tcom/jacob/com/Pointer.classPK 5`.=()vcom/jacob/com/PointerWeakReference.classPK tK=;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole Exceptions; getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java < => ?&WIN32OLE @A BC#org/jruby/ext/win32ole/RubyWIN32OLE DEjava/lang/ref/WeakReference F  GHorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptioncom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*  '+M+,N- Y- %*'' !"!#$ %&" '(PK 1R=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK "[N=/0org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK fnN=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK fnN='l8'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJcom/jacob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK 1R=J5 racob.jarPK ΁O= META-INF/PK ́O=KMETA-INF/MANIFEST.MFP=k07ˤNf RI>' d$_;]LtwlN%[1af J*a˪/x <&5{L8D;ß)&ۧmB)iuUM w5J45*{Y?9/*gt)rytdc74G?%aq@3'*XW-Ž&y@Rle]PK ́O=|w META-INF/JacobVersion.propertiesSv+Q04UO.Q0204P042422Q5050ROMQN-)JXX)8Urgr%f$OJ-҅48h2LYfIjQb H9/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK pO=y com/jacob/com/FuncDesc.class}T[sT|A4:I!VJBBmYNʗR 8Jp-x3x?a=mEQ=ww$`ަAZ >>Wd 2u2 2M2-2M0ViVb( ̀ dЊI⬾7 Yx,^RkbIWM=hg>rp acw];9ۺ4b ZǶjށoP'fiN~?t vVEsyuPڦKX+E(UX/!9֭.+Ap}MI!]Еխsw;~۪tHǹb[')cVOS0/Df2Öx(#0_D J;}\N/K\,< W|x U8Ŀ7g}xѪ!"ȇo-ķ}>|}a(K_7|E ȋo5B*➏ ڧx ק_$6:6tsq) e#HHYaI)AJ$Go-pJ⣯(-`w{x} 9|dhh(hh8hX{4n{40w o'MxP͈XJ2C/B I(JNB%CȑPrtw/Ih 92ay\5tpBI6r*C,]P|laV1~dZ_l5^UPK 4`.=mgcom/jacob/com/IUnknown.classTRGF BJ&BqH !WsXXʫwN$TP!\;?}`'`xc_t,cEn*m7᱆oup,\֥Ʀc v]yjOG?}?)~~_cڞp29:4rN6%TЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXCYİ)f =i/Cqc彖(gX<s*6E@0zS`z*fDIʔfʗy8bT]7_ؚ +×k1iDzU@ĠA {V(XKi{H颎%P3z42٢,5 BIV ps@YKNsV:MnCTh{*3*ԈTa u" "g4\Fo*.|K RyxA*\& |G]L28M ^ucVʱлc"PaDZn:ιʻP݃/ðo9zM'#,!?'/8>oE(L#CG ߉⻤>-wHn)HGwXwD%Zĺ|!s}R<ON:?//($ϖWWԿc>DY?s>vx)ޕ%C5ֹk|=&_[lCm =?BxJRsAIH`FSPBD T"҅H*B4u!Jua,w!JwaMy[Y>DZ; m?A؇zqqYGG_*!}0E.¸/!eU#8"qQMR"頰Sé V b /?u^<^GJCY +l-ȱXEJ`1Xm E5dž[ßhm߁wbѸ8e:u-!7Thj|̧D/udl|`A@qLXa`llF`Gl|^%-At| P'L7Tɶ_'NXB,! p;/ۚI9\={Wf'OMM?PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK ΁O= AMETA-INF/PK ́O=K+META-INF/MANIFEST.MFPK ́O=|w `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK pO=y gOcom/jacob/com/FuncDesc.classPK 4`.=mgScom/jacob/com/IUnknown.classPK 5`.= #Wcom/jacob/com/InvocationProxy.classPK 5`.=qK .>[com/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["Vacom/jacob/com/JacobException.classPK 5`.=倥v$bcom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !gcom/jacob/com/LibraryLoader.classPK 5`.=`:ocom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=ln{qcom/jacob/com/Parameter.classPK ]/=s-^Y$tcom/jacob/com/Pointer.classPK 5`.=()vcom/jacob/com/PointerWeakReference.classPK tK=?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK 1R=ewin32ole/utils.rbrequire 'win32ole/win32ole_variant' class WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def methods_with_flag(flag) members = [] all_methods(typeinfo_from_ole) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & flag members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin tdocs = type_lib.get_documentation(i) return type_lib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = WIN32OLE::VARIANT.variant_to_string(vt) || "Unknown Type #{vt}" type_details << type_string if type_details if vt == WIN32OLE::VARIANT::VT_PTR && type_details # TODO: Add detail logic end type_details ? type_details : type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK 1R='y$$win32ole/win32ole.jarPK fnN= META-INF/PK enN=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK "[N=/0org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK fnN=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK fnN='l8'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 U 3 3  3 3  3   3  3 3  @ @ @ 3 3   3  3  3  3 3    0   3 3   9   < 8               !" @#$% R( 3)*EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]+ ,-. / 012 34 56 7 89 :;< => ? @A BC DE FGH IJcom/jacob/com/Dispatch ^K = LM N OP Q RS TU V W XY VWjava/lang/ObjectX N YZ B[ \] java/lang/Boolean ^4 _`#org/jruby/ext/win32ole/RubyWIN32OLEa bc ^ijava/util/Date java/lang/Numberjava/lang/Double de fgjava/lang/Float hN ijjava/lang/String klm no p4 jk qr sN te uv wJ xyz {| }~  {{ M}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass; doubleValue()DnewFloat(D)Lorg/jruby/RubyFloat;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getDoublegetFloat()F getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`|,-+*,-+*,*-$. ab*,cd,mn,,}`9*abcd `4 **/ab  | `+* +0*+012+3Y*4+5+6 *+67+85+9*+9:;+<*+<=;*+8>?+@ *+@A*+aB #3:CJQ]dp|bef `+* +B~ YYkb~Pu@~7*+C23Y*4+D5*+E7*+F?*+G;*+H;*+IA*+Ja* DM]foxbeft `XKM,+L*,MNa  b ef `V$*!*OP*Q**d*a"b $`8*) (RYSTa ' RPK "[N== win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK fnN=KR#R#win32ole/win32ole.jarPK "[N= META-INF/PK ![N=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK "[N=/0org/jruby/ext/win32ole/RubyInvocationProxy.class1< % & ' ( )*+ ,- ./0runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK YN=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK YN=V&&)org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0  3 3 8              ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  ! " #$% &' () * +, -./ 01 2 34 56 78 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 5N OP java/lang/Boolean Q' RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _' cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsYA- :* :,6+*+* ZIJKMN.Q[RA\]AfgAtuAvuAwu9xy1zP*{|h i}I~Ym,2N*Y-*ZW Y[[*\]fgv hi}IZYE*+,Z`[ \]fgvhi}IZsY\ *+,--Zf[4 \] fg tu vu uhiY|,,2N-*+--d,*+-,Zk m$p[*,\],fg,v #hi}IZeYG* + Z uw[\]fghiYc,N+*-! Z |~[*\]fguhi[s}IYw,:*-"#+ Z[4\]fguluhi[s}IsY] *+,-Z[4 \] fg tu vu wuhiY],2N*+-,Z  [*\]fgv hi}IZY%*-$: :*,%W+ Z[>%\]%fg%%vzPRY ;- :,6* :*&: * ': + Z 1[p ;\];fg;tu;vu;wu;|3xy,{|$zP R 1 m YB ( Z[\]|Y5+>d)d*:6d+2"SZ ,2[>|5\]55|2| zPY4++=)*N6+,":-S-Z" &,2[>&|4\]4xy/|"zPY|,-+*,-+*,*-$. Z[*,\],fg,,vY9*Z[\] Y4 **/Z[  u Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z" [ $Y8*) (KYLMZ  KPK "[N== win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE java_import org.jruby.ext.win32ole.RubyInvocationProxy require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK "[N={C!!win32ole/win32ole.jarPK YN= META-INF/PK YN=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK yK=ii0org/jruby/ext/win32ole/RubyInvocationProxy.class14 " # $ %&' * +,-runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;x0 access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java ./ 01,org/jruby/ext/win32ole/RubyInvocationProxy$1 InnerClasses 2 3.*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V%org/jruby/runtime/builtin/IRubyObject getRuntime()Lorg/jruby/Ruby;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)Vstart!   T**+*+  QY*,+  % /*  /*   !) PK YN=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK YN=V&&)org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0  3 3 8              ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  ! " #$% &' () * +, -./ 01 2 34 56 78 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 5N OP java/lang/Boolean Q' RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _' cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsYA- :* :,6+*+* ZIJKMN.Q[RA\]AfgAtuAvuAwu9xy1zP*{|h i}I~Ym,2N*Y-*ZW Y[[*\]fgv hi}IZYE*+,Z`[ \]fgvhi}IZsY\ *+,--Zf[4 \] fg tu vu uhiY|,,2N-*+--d,*+-,Zk m$p[*,\],fg,v #hi}IZeYG* + Z uw[\]fghiYc,N+*-! Z |~[*\]fguhi[s}IYw,:*-"#+ Z[4\]fguluhi[s}IsY] *+,-Z[4 \] fg tu vu wuhiY],2N*+-,Z  [*\]fgv hi}IZY%*-$: :*,%W+ Z[>%\]%fg%%vzPRY ;- :,6* :*&: * ': + Z 1[p ;\];fg;tu;vu;wu;|3xy,{|$zP R 1 m YB ( Z[\]|Y5+>d)d*:6d+2"SZ ,2[>|5\]55|2| zPY4++=)*N6+,":-S-Z" &,2[>&|4\]4xy/|"zPY|,-+*,-+*,*-$. Z[*,\],fg,,vY9*Z[\] Y4 **/Z[  u Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z" [ $Y8*) (KYLMZ  KPK tK=^%a win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK YN=h h win32ole/win32ole.jarPK aK= META-INF/PK `K=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK yK=ii0org/jruby/ext/win32ole/RubyInvocationProxy.class14 " # $ %&' * +,-runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;x0 access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java ./ 01,org/jruby/ext/win32ole/RubyInvocationProxy$1 InnerClasses 2 3.*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V%org/jruby/runtime/builtin/IRubyObject getRuntime()Lorg/jruby/Ruby;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)Vstart!   T**+*+  QY*,+  % /*  /*   !) PK aK=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK aK=R; ( ()org/jruby/ext/win32ole/RubyWIN32OLE.class1 U : :  : :  :   :  : :  B B B : :   :  :  :  : :  . . .      7    : : ?           !  "  # $% B&'( R :+,EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ \]- ./0 1 234 56 78 9 :; <=> ?@ A BC DE FG HIJ KLcom/jacob/com/Dispatch ^M = NO P QR S TU VW X Y XY VWjava/lang/ObjectZ P [\] ^_java/lang/StringBuilder ^CALLING NO_ARG: `a bLc dM De fg java/lang/Boolean h6 ij#org/jruby/ext/win32ole/RubyWIN32OLEk lm ^ijava/util/Date java/lang/Number nP opjava/lang/String qrs tu v6 jk wx yP zL {|} ~   {{ O}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses Z[org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;java/lang/SystemoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintln>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!:UVWXY Z[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a(* +b* cd ef gh \]jk`/*a.b cd\l`@ +*a4b cd mnopqr`1+N*::,+- W- a9:>?@)A,Cb> st1cd1mn1uv,ef#wxopyz`A- :* :,6+*+* aIJKMN.QbRAcdAmnA{|A}|A~|91W*o pI`m,2N*Y-*aW Y*cdmn} opIZ`E*+,a`b cdmn}opIZz`\ *+,--afb4 cd mn {| }| |op`|,,2N-*+--d,*+-,ak m$pb*,cd,mn,} #opIZl`G* + a uwbcdmnop`c,N+*-! a |~b*cdmn|op[sI`w,:*-"#+ ab4cdmn|s|op[sIz`] *+,-ab4 cd mn {| }| ~|op`],2N*+-,a  b*cdmn} opIZ`%*-$: :*,%W+ ab>%cd%mn%%}WY` ;- :,6* :*&: * ': + a 1bp ;cd;mn;{|;}|;~|;3,$W Y 1 t `B ( abcd`5+>d)d*:6d+2"Sa ,2b>5cd552 W`4++=)*N6+,":-S-a" &,2b>&4cd4/"W`E-,-.Y/01,123+*,4+*,*-$5 a/b*EcdEmnEE}`9*abcd `4 **6ab  | `l+* +7*+789+:Y*;+<+= *+=>+?*+?@A+B *+BC*+a2 #3:CJV]fblefl `+* +Dk YYkkkPb@k7*+E9:Y*;+F<*+G>*+HA*+IC*+Ja" DM]foxbeft `XKM,+L*,MNa b ef `V$*!*OP*Q**d*a" b $`8*) (RYSTa * RPK tK=^%a win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK aK=vnnwin32ole/win32ole.jarPK yK= META-INF/PK yK=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK=K32org/jruby/ext/win32ole/RubyInvocationProxy$1.class1G * + , - (. /01 23 (4 567val$variantArgs[Lcom/jacob/com/Variant;val$methodNameLjava/lang/String;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()ViIcontext!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.javaEnclosingMethod8 9:     ;<= >?%org/jruby/runtime/builtin/IRubyObject@ AB CD EF,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;  >*+*,*-* N*L*=N6-**2S* +*- W" 4:!M"4!N C !="8#$%&'()  PK yK=ii0org/jruby/ext/win32ole/RubyInvocationProxy.class14 " # $ %&' * +,-runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant; access$000>(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/Ruby;x0 access$100U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java ./ 01,org/jruby/ext/win32ole/RubyInvocationProxy$1 InnerClasses 2 3.*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V%org/jruby/runtime/builtin/IRubyObject getRuntime()Lorg/jruby/Ruby;Y(Lorg/jruby/ext/win32ole/RubyInvocationProxy;[Lcom/jacob/com/Variant;Ljava/lang/String;)Vstart!   T**+*+  QY*,+  % /*  /*   !) PK tK=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK tK=V&&)org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0  3 3 8              ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  ! " #$% &' () * +, -./ 01 2 34 56 78 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 5N OP java/lang/Boolean Q' RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _' cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsYA- :* :,6+*+* ZIJKMN.Q[RA\]AfgAtuAvuAwu9xy1zP*{|h i}I~Ym,2N*Y-*ZW Y[[*\]fgv hi}IZYE*+,Z`[ \]fgvhi}IZsY\ *+,--Zf[4 \] fg tu vu uhiY|,,2N-*+--d,*+-,Zk m$p[*,\],fg,v #hi}IZeYG* + Z uw[\]fghiYc,N+*-! Z |~[*\]fguhi[s}IYw,:*-"#+ Z[4\]fguluhi[s}IsY] *+,-Z[4 \] fg tu vu wuhiY],2N*+-,Z  [*\]fgv hi}IZY%*-$: :*,%W+ Z[>%\]%fg%%vzPRY ;- :,6* :*&: * ': + Z 1[p ;\];fg;tu;vu;wu;|3xy,{|$zP R 1 m YB ( Z[\]|Y5+>d)d*:6d+2"SZ ,2[>|5\]55|2| zPY4++=)*N6+,":-S-Z" &,2[>&|4\]4xy/|"zPY|,-+*,-+*,*-$. Z[*,\],fg,,vY9*Z[\] Y4 **/Z[  u Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z" [ $Y8*) (KYLMZ  KPK tK=^%a win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK yK=~~win32ole/win32ole.jarPK yK= META-INF/PK yK=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Ltw5=q6%]1Ť!qIsIIQEXy_[Z OBmw"VgJ uXV *MiD %jĕHiBmzUL{)!Ejj(.}F95)l u^cHaz ?ի 2 %ktt-zR/\PK tK=Мw META-INF/JacobVersion.propertiesSQ04TO.Q0204P04224Q5050ROMQN-P04əXX)8Urgr%f$OJ-҅48h2LYfIjQb HP/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK )H=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK ֊H=/ com/jacob/com/FuncDesc.class}TRPݧM/ʝrڠQ"mbf{sD Ӧ<~:c?qCJCNgvkN?/`aB^pHC&&rՂS2Gr%\)BE @L0VMmv5?Jb$H4#06g傘*L:;bI+ E|dP5%7I)*>|KYe|$U ,%Z@mH[v R>TXȖFa&HNH9wHլd Tr:FeTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK wH=lncom/jacob/com/Parameter.classuRQOP=km  [Q&SQEcBBnTdU>hbc?'. J|mssxZQ:C>CCG.6]<CyԷ exKb>T(  8(Er(08{r8&uJoŖ@H^xd ǹAt9'c%ÄvP%/oknG.^Ft}m[d}E9ԣtɑ 4s1e1ɩE'VR.MgiʐC= jSLUKSʶmQrO#ExVz|w{'`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK tK=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK tK=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK tK=e( com/jacob/com/ROT.classW xTWLxy@R {H!l! YV2yL̛mvѺťZHtVܨ֭n.uZ}icwdI꧒w=sr=a > j0:.DŽ<-✎ZPbq%>B>>>>'.xD&y|Aţ* X5mV#fY4CevS0X\MZG;bX/nŭ.5vzCQaf6)p慄 N%CVSˊ]AR)*DDL_a9d7qڼ`*kj L -~gMI AoX%:oGc&x? ՛\]fc=^z#V0^Qi8 3wMvR-],P"hFX1~'GJ!3eF{ LJ7lg_#O83k*501 XRUMÊvD&ⶈ8åެQ鋢oΤ]*37A=nVf3KC26+[ނs p qY]6'R"Z~V{QkV{IYtZIU\6Q0W䰊ZmS6%)4ɣe3d#w^Hن%@>w@h,T+/hl7 /Sœ} O僀~B}ש)o&9u948+sj "5""K$RpD6/> ;x&Osq8^ \򘖈" bS&x]Vhd; A>j5&'9oHT8;>+bF|)/ 'nj#o)l/EgΕ ;HUY7b8_$:?G]onN-o*!=@J-G6]WdyIĵp=pMJ8o3dwË)IzCƀIqswGy5ZctO! Ø)l>+ΣHIx9W ([ujU@8F# RDx4Ҡ}ٝt:uQᄗ2D@Sp5X8Ldqbeϐ̀#IDOxfX0~A,J` JN! p´xΊsu C q>aμJJcF 疒{1 BX8S"ue2v %4Cm,DP06Ђ(ӬE/p##Aܔit $(ű'G= T$)aR.,7>˨ȗI*8.soUMOnشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏXۦI H#PEMYfK)7Ӳ )i񂈈xPA<~ |wKq0ƳپKy'ET#kxlV 3N oI~rjUElX7Mdsx'N8l`vy'_zR>wU mw]#6uPN gy®2P:jɾhavTT!"Ej,>I)e9m{OF3ZiˑB<7| :mi(mA͐;.õt"ďX);9JlGG^^ІecL0:/>'eK j7nOZThJf'm<Aŧ153 Ln 5z||]#.ޞUsh agAW6}?h 3Q;ZZOg0e2$F[19GHI8Jbn7~2Wd8p^.yxC -̿9=u ǜJ»*;Pa5GqX]Ѝ/]  ^;jwsr>sx ({8^x=?oFsě~}Lw3-B[9'9 v+TP&ԓw 7n9l!pxES pw}=x:sz]:Gٺ sN$Jѿ{X-bk[WX$P@,TX$X`,*C(i.Cs,RX$\ V_zI&d׆zp2qkpfd{ *óPp7ͺvi#+ᮉfpdY܅؎zof;꾅0>؟A?v׼FL9 +n n?$ > 7\G|_=9(<op<opX v|O(\ ~x`l#[ VHlO%[k= C7?1s O]ȷU,4w~vs(x Vs+],&9˒tU Kdzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK tK= AMETA-INF/PK tK=]+META-INF/MANIFEST.MFPK tK=Мw `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK )H=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK sG=筮 "{;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &i@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!3Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!:Jcom/jacob/com/Documentation.classPK zG=2\h8Lcom/jacob/com/EnumVariant.classPK ֊H=/ gOcom/jacob/com/FuncDesc.classPK 4`.=mgRcom/jacob/com/IUnknown.classPK 5`.= #Vcom/jacob/com/InvocationProxy.classPK 5`.=qK .EZcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["]`com/jacob/com/JacobException.classPK 5`.=倥v$acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !fcom/jacob/com/LibraryLoader.classPK 5`.=`: ncom/jacob/com/MainSTA.classPK 5`.=6T3+ocom/jacob/com/NotImplementedException.classPK wH=lnpcom/jacob/com/Parameter.classPK ]/=s-^Y+scom/jacob/com/Pointer.classPK 5`.=(0ucom/jacob/com/PointerWeakReference.classPK tK=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK yK= RR2org/jruby/ext/win32ole/RubyInvocationProxy$1.class14 " # $ % & ' ()*+ val$context!Lorg/jruby/runtime/ThreadContext;val$methodNameLjava/lang/String;val$args([Lorg/jruby/runtime/builtin/IRubyObject;this$0,Lorg/jruby/ext/win32ole/RubyInvocationProxy;(Lorg/jruby/ext/win32ole/RubyInvocationProxy;Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lorg/jruby/ext/win32ole/RubyInvocationProxy$1;run()V SourceFileRubyInvocationProxy.javaEnclosingMethod, -.    /01 23,org/jruby/ext/win32ole/RubyInvocationProxy$1java/lang/Thread*org/jruby/ext/win32ole/RubyInvocationProxyinvokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant; access$000U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObject callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;    D*+*,*-** H****W !"  ! PK yK=90org/jruby/ext/win32ole/RubyInvocationProxy.class1E * + , - ./0 123 6 789runtimeLorg/jruby/Ruby;target'Lorg/jruby/runtime/builtin/IRubyObject;*(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; access$000U(Lorg/jruby/ext/win32ole/RubyInvocationProxy;)Lorg/jruby/runtime/builtin/IRubyObject;x0 SourceFileRubyInvocationProxy.java  : ;< = >?%org/jruby/runtime/builtin/IRubyObject@ AB,org/jruby/ext/win32ole/RubyInvocationProxy$1 InnerClasses C D:*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;(Lorg/jruby/ext/win32ole/RubyInvocationProxy;Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Vstart!  T**+*+ D*N,6:6*,2SY*-+ " -3B%HDDD< ! 8"1#$%&/*  '()5 PK tK=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK tK=V&&)org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0  3 3 8              ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  ! " #$% &' () * +, -./ 01 2 34 56 78 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 5N OP java/lang/Boolean Q' RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _' cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsYA- :* :,6+*+* ZIJKMN.Q[RA\]AfgAtuAvuAwu9xy1zP*{|h i}I~Ym,2N*Y-*ZW Y[[*\]fgv hi}IZYE*+,Z`[ \]fgvhi}IZsY\ *+,--Zf[4 \] fg tu vu uhiY|,,2N-*+--d,*+-,Zk m$p[*,\],fg,v #hi}IZeYG* + Z uw[\]fghiYc,N+*-! Z |~[*\]fguhi[s}IYw,:*-"#+ Z[4\]fguluhi[s}IsY] *+,-Z[4 \] fg tu vu wuhiY],2N*+-,Z  [*\]fgv hi}IZY%*-$: :*,%W+ Z[>%\]%fg%%vzPRY ;- :,6* :*&: * ': + Z 1[p ;\];fg;tu;vu;wu;|3xy,{|$zP R 1 m YB ( Z[\]|Y5+>d)d*:6d+2"SZ ,2[>|5\]55|2| zPY4++=)*N6+,":-S-Z" &,2[>&|4\]4xy/|"zPY|,-+*,-+*,*-$. Z[*,\],fg,,vY9*Z[\] Y4 **/Z[  u Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z" [ $Y8*) (KYLMZ  KPK tK=^%a win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE java_import java.util.Calendar java_import com.jacob.com.Variant java_import com.jacob.com.Automation java_import com.jacob.com.ComFailException java_import com.jacob.com.ComThread java_import com.jacob.com.Dispatch java_import com.jacob.com.DispatchEvents java_import com.jacob.com.EnumVariant java_import com.jacob.com.FuncDesc java_import com.jacob.com.TypeInfo java_import com.jacob.com.TypeLib java_import com.jacob.com.VarDesc java_import com.jacob.com.VariantUtilities java_import org.jruby.ext.win32ole.RubyWIN32OLE require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_param' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK tK=f- - win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def typedesc_value(vt, type_details=nil) type_string = case vt when Variant::VariantShort then "I2" when Variant::VariantInt then "I4" when Variant::VariantFloat then "R4" when Variant::VariantDouble then "R8" when Variant::VariantCurrency then "CY" when Variant::VariantDate then "DATE" when Variant::VariantString then "BSTR" when Variant::VariantBoolean then "BOOL" when Variant::VariantVariant then "VARIANT" when Variant::VariantDecimal then "DECIMAL" # when Variant::VariantInt then # "I1" when Variant::VariantByte then "UI1" # when Variant::VariantInt then # "UI2" # when Variant::VariantInt then # "UI4" when Variant::VariantLongInt then "I8" # when Variant::VariantInt then # "UI8" # when Variant::VariantInt then # "INT" # when Variant::VariantInt then # "UINT" # when Variant::VariantInt then # "VOID" # when Variant::VariantInt then # "HRESULT" when Variant::VariantPointer then # TODO: Add detail logic "PTR" # when Variant::VariantInt then # "SAFEARRAY" # when Variant::VariantInt then # "CARRAY" # when Variant::VariantInt then # "USERDEFINED" when Variant::VariantObject then "UNKNOWN" when Variant::VariantDispatch then "DISPATCH" when Variant::VariantError then "ERROR" # when Variant::VariantInt then # "LPWSTR" # when Variant::VariantInt then # "LPSTR" else "Uknown Type #{vt}" end if type_details type_details << type_string end type_string end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK tK=8SL  win32ole/win32ole.jarPK sG= META-INF/PK sG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK g3\P'&","/ diP]Cb2}|&l%2 !~S5|AQBɻI46*{Y?e]՗om|lztdw7ԑ7y#%aq@3'M7T?Vn?:݃ 5Y"f.[PK sG=Ask-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK sG=筮 "com/jacob/com/DispatchEvents.classVkSU~$l^i xKCh`UTnP(T6ivåV:8ՙӆZf|43psygǟpw}8 LЃ)/IB۸ 惂);b{0#|ŜB{ރvC-XD7x7}XƊ'U|8)x_|CCS&fnYI-s.g2ēV&%DTHQ;c  ng5'>жlb'ѳK I+qdXrx/muf8 lr$]; rdA77*.Ypr1esV::_:g8YGKnhYAY㄂N;U S爮1v-:ca$3ܶ4[V6$5> Y˺蓖qNpÀX2"^k *֡3tTڞFyZ.@AANYl)30X*p$x 3'5Ӵ`4Q$ ԤC~9Awt0xZ3s|;IDUpd*bUj:ѵq8|hԻOB EsӴͪ'ztTǑbEu{'iSttJvQ.e.CV(ڊ[9"pkqei,7SʪR+VlDZi͠!M;%!!EvTL\l{@I9) ^C]@F/}Nz蟦V><oH h }4#O*B Dr\Sx͏8@ry?Y[ .>: qʸ.fݥJ] c{Owϰϑtp1r9+`!B~pEf  +xU=^ЕU.Ie繙Hݑʅi_QaPyc~AP_P?հqIQ9xc)\]t&`dTVv0{2@F(x,P$%'KJoIPK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWr />`ԑߜqfm;3s99=w翿p _5C6c:nn(`F>mQ$O4B%K)EeYqK貆X] 4YnuwWomɬ9)P bp}Qߩ40|qL!D1XqFeծ-eZRE2ANCcp=Ԇ<6*Zs\߮?Shԝdìz5{lWlg"5][7k,֬Y :\:+8pt Nf GRȒM]dGg+m9UuˮCMs̗Mw=?i[!l]&KκklK^n7X+Swkv? %QPuꋒ嬁H+=48KX`Xm]\1poxi_a]A~%Nyͮ 8Y6IHze2PFEkCEJ k#釖] ˼#JAᄲC%UZ^kbxe| m/&w%iu]F'kPm]HOl qZ52v6Dz/B8,W'|ejYA!ʫ]Y=% yG'gkBF'#J>Izn*#x:  4FeE.ȞदEG "<g'N1t@ @vZ:G6 ;jGX">q5Sdte@i|}Oq\;0sy5&R7DOOТU&t3:_O!pwmt66i^ (TF$?L=A/D_ :9Y{5j0V$ʀ>oNt]caB$.B0 *INq|@9yj'Q 'PK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK hG=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK hG=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK hG=~M com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ]|A@Q>t/Ssܕ95YL%TL)8wH{?~qAP6a{U.trY\kZ#v؊'MYݢ/-lFVchrpzdIiXpK# tGȠ6Sb8M6]txv9>e}#G%sEܚ :rRj8"g%ˋ8KJtq4 8kzr ꔰk3dLuҔ H!c89[#pQuC[M@ ]}fK1Q$<\S H`5U^Ze/=)e(:T>Q*%4hO:iv=tT8>h0-#P\M-Ycw3d3.'|<3 ,r? #X$tŧ:;enشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK sG= AMETA-INF/PK sG=N+META-INF/MANIFEST.MFPK sG=AsL(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK sG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK sG=/p6:':')org/jruby/ext/win32ole/RubyWIN32OLE.class1w P 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0   3 3 8                      ; K 3! 3" 3#$EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ]^ WX% &'( ) *+, -. /0 1 23 456 78 9 :; <= >? @AB CDcom/jacob/com/Dispatch ]E = FG H IJ K LM NO P Q ST QRjava/lang/ObjectR H ST <U VW java/lang/Boolean X. YZ#org/jruby/ext/win32ole/RubyWIN32OLE[ \] ]hjava/util/Date java/lang/Number ^H _`java/lang/String abc de f. ij gh iH jD klm no pq rs tu{{ vG}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ] UV YZ [\org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3PQRST UVWXYZ[\]^_R *+,*`$! %a  bc de fg]h_\ *+,*-`*, -a* bc de fg WXij_/*`0a bcWk_@ +*`6a bc lmnopq_1+N*::,+- W- `;<@AB)C,Ea> rs1bc1lm1tu,de#vwnoxy_A- :* :,6+*+* `KLMOP.SaRAbcAlmAz{A|{A}{9~1R*Zn oI_m,2N*Y-*`Y []a*bclm| noIZ_E*+,`ba bclm|noIZy_\ *+,--`ha4 bc lm z{ |{ {no_|,,2N-*+--d,*+-,`m o$ra*,bc,lm,| #noIZk_G* + ` wyabclmno_c,N+*-! ` ~a*bclm{no[sI_w,:*-"#+ `a4bclm{r{no[sIy_] *+,-`a4 bc lm z{ |{ }{no_],2N*+-,`  a*bclm| noIZ_%*-$: :*,%W+ `a>%bc%lm%%|RT_ ;- :,6* :*&: * ': + ` 1ap ;bc;lm;z{;|{;}{;Z3~,Z$R T 1 s _B ( `abcZ_5+>d)d*:6d+2"S` ,2a>Z5bc55Z2Z R_4++=)*N6+,":-S-`" &,2a>&Z4bc4~/Z"R_|,-+*,-+*,*-$. `a*,bc,lm,,|_9*`abc _4 **/`a  { _l+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+`2 #3:CJV]faldel _+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+C`" DM]foxades _XDM,+E*,FG` a de _V$*!*HI*J**d*` " a $_H *) (KYLMN O` '( KPK sG=sU win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.DispatchEvents import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK sG=_BBwin32ole/win32ole.jarPK PgG= META-INF/PK OgG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWr />`ԑߜqfm;3s99=w翿p _5C6c:nn(`F>mQ$O4B%K)EeYqK貆X] 4YnuwWomɬ9)P bp}Qߩ40|qL!D1XqFeծ-eZRE2ANCcp=Ԇ<6*Zs\߮?Shԝdìz5{lWlg"5][7k,֬Y :\:+8pt Nf GRȒM]dGg+m9UuˮCMs̗Mw=?i[!l]&KκklK^n7X+Swkv? %QPuꋒ嬁H+=48KX`Xm]\1poxi_a]A~%Nyͮ 8Y6IHze2PFEkCEJ k#釖] ˼#JAᄲC%UZ^kbxe| m/&w%iu]F'kPm]HOl qZ52v6Dz/B8,W'|ejYA!ʫ]Y=% yG'gkBF'#J>Izn*#x:  4FeE.ȞदEG "<g'N1t@ @vZ:G6 ;jGX">q5Sdte@i|}Oq\;0sy5&R7DOOТU&t3:_O!pwmt66i^ (TF$?L=A/D_ :9Y{5j0V$ʀ>oNt]caB$.B0 *INq|@9yj'Q 'PK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK fG= AMETA-INF/PK fG= s+META-INF/MANIFEST.MFPK fG=ncom/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK 5`.=F "|;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &]@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)zEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!'Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!.Jcom/jacob/com/Documentation.classPK fG=I0,Lcom/jacob/com/EnumVariant.classPK 5`.=VӴhPcom/jacob/com/FuncDesc.classPK 4`.=mgQcom/jacob/com/IUnknown.classPK 5`.= #AVcom/jacob/com/InvocationProxy.classPK 5`.=qK .Ycom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["_com/jacob/com/JacobException.classPK 5`.=倥v$>acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !ecom/jacob/com/LibraryLoader.classPK 5`.=`:Qmcom/jacob/com/MainSTA.classPK 5`.=6T3+Lncom/jacob/com/NotImplementedException.classPK ]/=s-^Yocom/jacob/com/Pointer.classPK 5`.=(qcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK PgG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK PgG=\Pg(()org/jruby/ext/win32ole/RubyWIN32OLE.class1y P 4 4  4  4  4   4  4 4  < < < 4 4  4  4  4  4 4    1   4  4  9             < K" 4# 4$ 4%&EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant;each2ole _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ]^ WX' ()* + ,-. /0 12 3 45 678 ij 9: ;< = >? @A BC DEF GHcom/jacob/com/Dispatch ]I = JK L MN OP QR S T ST QRjava/lang/ObjectU L VW @X YZ java/lang/Boolean [0 \]#org/jruby/ext/win32ole/RubyWIN32OLE^ _` ]hjava/util/Date java/lang/Number aL bcjava/lang/String de fg h0 ij kL lH mno pq rs tu vw{{ xK}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ] UV YZ [\org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;com/jacob/com/Variant safeRelease%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;getC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;getType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!4PQRST UVWXYZ[\]^_R *+,*`$! %a  bc de fg]h_\ *+,*-`*, -a* bc de fg WXij_/*`0a bcWk_@ +*`6a bc lmnopq_1+N*::,+- W- `;<@AB)C,Ea> rs1bc1lm1tu,de#vwnoxq_-+N*: : - `JKOP Q%R(Ta> yX-bc-lm-tu(devwnoz{_A-:*:,6+*+* `Z[\^_.baRAbcAlmA|}A~}A}91R*Zn oI_m,2N*Y-*`h jla*bclm~ noIZ_E*+,`qa bclm~noIZ{_\ *+,--`wa4 bc lm |} ~} }no_|,,2N-*+--d, *+-,!`| ~$a*,bc,lm,~ #noIZk_G* + ` abclmno_c,N+*-" ` a*bclm}no[sI_w,:*-#$+ `a4bclm}r}no[sI{_] *+,-`a4 bc lm |} ~} }no_],2N*+-, `  a*bclm~ noIZ_%*-%: :*,&W+ `a>%bc%lm%%~RT_ ;-:,6*:*': * (: + ` 1ap ;bc;lm;|};~};};Z3,Z$R T 1 s _B ) `abcZ_5+>d*d+:6d+2#S` ,2a>Z5bc55Z2Z R_4+,=*+N6+-#:-S-`" &,2a>&Z4bc4/Z"R_|,-+*,.+*,*-%/ `a*,bc,lm,,~_9*`abc _4 *+0`a  } _l+* +1*+123+4Y*5+6+7 *+78+9*+9:;+< *+<=*+`2 #3:CJV]faldel _+* +>k YYkkkPb@k7*+?34Y*5+ 6*+@8*+A;*+B=*+C`" DM]fox ades _XDM,+E*,FG` a de _V$*!*HI*J**d*`"a $_H +* )KYLMN O` '(! KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK PgG= uQaQawin32ole/win32ole.jarPK gG= META-INF/PK gG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWr />`ԑߜqfm;3s99=w翿p _5C6c:nn(`F>mQ$O4B%K)EeYqK貆X] 4YnuwWomɬ9)P bp}Qߩ40|qL!D1XqFeծ-eZRE2ANCcp=Ԇ<6*Zs\߮?Shԝdìz5{lWlg"5][7k,֬Y :\:+8pt Nf GRȒM]dGg+m9UuˮCMs̗Mw=?i[!l]&KκklK^n7X+Swkv? %QPuꋒ嬁H+=48KX`Xm]\1poxi_a]A~%Nyͮ 8Y6IHze2PFEkCEJ k#釖] ˼#JAᄲC%UZ^kbxe| m/&w%iu]F'kPm]HOl qZ52v6Dz/B8,W'|ejYA!ʫ]Y=% yG'gkBF'#J>Izn*#x:  4FeE.ȞदEG "<g'N1t@ @vZ:G6 ;jGX">q5Sdte@i|}Oq\;0sy5&R7DOOТU&t3:_O!pwmt66i^ (TF$?L=A/D_ :9Y{5j0V$ʀ>oNt]caB$.B0 *INq|@9yj'Q 'PK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK fG= AMETA-INF/PK fG= s+META-INF/MANIFEST.MFPK fG=ncom/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK 5`.=F "|;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &]@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)zEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!'Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!.Jcom/jacob/com/Documentation.classPK fG=I0,Lcom/jacob/com/EnumVariant.classPK 5`.=VӴhPcom/jacob/com/FuncDesc.classPK 4`.=mgQcom/jacob/com/IUnknown.classPK 5`.= #AVcom/jacob/com/InvocationProxy.classPK 5`.=qK .Ycom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["_com/jacob/com/JacobException.classPK 5`.=倥v$>acom/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !ecom/jacob/com/LibraryLoader.classPK 5`.=`:Qmcom/jacob/com/MainSTA.classPK 5`.=6T3+Lncom/jacob/com/NotImplementedException.classPK ]/=s-^Yocom/jacob/com/Pointer.classPK 5`.=(qcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK gG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK gG==q(()org/jruby/ext/win32ole/RubyWIN32OLE.class1{ Q        < < <           2       9              < ! L$ % & '(EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant;each2ole _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ^_ XY) *+, - ./0 12 34 5 67 89#org/jruby/ext/win32ole/RubyWIN32OLE l: ;< = >? @A BC DEF GHcom/jacob/com/Dispatch ^I = JK L MN O PQ RS T U TU RSjava/lang/ObjectV L WX @Y Z[ java/lang/Boolean \2 ]^_ `a ^ijava/util/Date java/lang/Number bL cdjava/lang/String efg hi j2 jk kl mL nH opq rs tu vw xy{{ zK}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ^ VW Z[ \]org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith! QRSTU VWXYZ[\]^_`R *+,*a$! %b  cd ef gh^i`\ *+,*-a*, -b* cd ef gh XYjk`/*a0b cdXl`@ +*a6b cd mnopqr`1+N*::,+- W- a;<@AB)C,Eb> st1cd1mn1uv,ef#wxopyr`3+N*:- :+ W- aJKOP$Q+R.Tb>$zd3cd3mn3uv.ef%wxop{|`A-:*:,6+*+* aZ[\^_.bbRAcdAmnA}~A~A~91S*[o pI`m,2N*Y-*ah jlb*cdmn opIZ`E*+,aqb cdmnopIZ|`\ *+,--awb4 cd mn }~ ~ ~op`|,,2N-*+--d, *+-,!a| ~$b*,cd,mn, #opIZl`G*"+ a bcdmnop`c,N+*-# a b*cdmn~op[sI`w,:*-$%+ ab4cdmn~s~op[sI|`] *+,-ab4 cd mn }~ ~ ~op`],2N*+-, a  b*cdmn opIZ`%*-&: :*,'W+ ab>%cd%mn%%SU` ;-:,6*:*(: * ): + a 1bp ;cd;mn;}~;~;~;[3,[$S U 1 t `B * abcd[`5+>d+d,:6d+2$Sa ,2b>[5cd55[2[ S`4+-=+,N6+.$:-S-a" &,2b>&[4cd4/["S`|,-+*,/+*,*-&0 ab*,cd,mn,,`9*abcd `4 *,1ab  ~ `l+* +2*+234+ Y*5+6+7 *+78+9*+9:;+< *+<=*+a2 #3:CJV]fblefl `+* +>k YYkkkPb@k7*+?4 Y*5+@6*+A8*+B;*+C=*+Da" DM]fox beft `XEM,+F*,GHa b ef `V$*!*IJ*K**d*a"b $`H ,+ *LYMNO Pa '(# LPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK gG=L7P P win32ole/win32ole.jarPK ^G= META-INF/PK ^G=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK iM!3`-@nrp炒ڣر3|$l1ڻp3%lͨ%4Ճ F~)(])9MMo^aяeVD%n.}F9_5Ʃ u^cHaßkEjD$gNgi"xɋ4[PK ]G=xdy META-INF/JacobVersion.properties5̱ 0=w8pm.$FNA6 ZJW zϠq^7"JQ8@o dip G-WG55Rk|:L;tIܱcY̜nPK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK ]G=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK ]G= AMETA-INF/PK ]G=J+META-INF/MANIFEST.MFPK ]G=xdy `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK ]G=?bH*com/jacob/com/Dispatch.classPK 5`.=F "};com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &^@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf){Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!(Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!/Jcom/jacob/com/Documentation.classPK q/=2\h-Lcom/jacob/com/EnumVariant.classPK 5`.=VӴh\Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Ucom/jacob/com/InvocationProxy.classPK 5`.=qK .NXcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["f^com/jacob/com/JacobException.classPK 5`.=倥v$`com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:lcom/jacob/com/MainSTA.classPK 5`.=6T3+mcom/jacob/com/NotImplementedException.classPK ]/=s-^Yncom/jacob/com/Pointer.classPK 5`.=(pcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK hZG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK hZG=/p6:':')org/jruby/ext/win32ole/RubyWIN32OLE.class1w P 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0   3 3 8                      ; K 3! 3" 3#$EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ]^ WX% &'( ) *+, -. /0 1 23 456 78 9 :; <= >? @AB CDcom/jacob/com/Dispatch ]E = FG H IJ K LM NO P Q ST QRjava/lang/ObjectR H ST <U VW java/lang/Boolean X. YZ#org/jruby/ext/win32ole/RubyWIN32OLE[ \] ]hjava/util/Date java/lang/Number ^H _`java/lang/String abc de f. ij gh iH jD klm no pq rs tu{{ vG}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ] UV YZ [\org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3PQRST UVWXYZ[\]^_R *+,*`$! %a  bc de fg]h_\ *+,*-`*, -a* bc de fg WXij_/*`0a bcWk_@ +*`6a bc lmnopq_1+N*::,+- W- `;<@AB)C,Ea> rs1bc1lm1tu,de#vwnoxy_A- :* :,6+*+* `KLMOP.SaRAbcAlmAz{A|{A}{9~1R*Zn oI_m,2N*Y-*`Y []a*bclm| noIZ_E*+,`ba bclm|noIZy_\ *+,--`ha4 bc lm z{ |{ {no_|,,2N-*+--d,*+-,`m o$ra*,bc,lm,| #noIZk_G* + ` wyabclmno_c,N+*-! ` ~a*bclm{no[sI_w,:*-"#+ `a4bclm{r{no[sIy_] *+,-`a4 bc lm z{ |{ }{no_],2N*+-,`  a*bclm| noIZ_%*-$: :*,%W+ `a>%bc%lm%%|RT_ ;- :,6* :*&: * ': + ` 1ap ;bc;lm;z{;|{;}{;Z3~,Z$R T 1 s _B ( `abcZ_5+>d)d*:6d+2"S` ,2a>Z5bc55Z2Z R_4++=)*N6+,":-S-`" &,2a>&Z4bc4~/Z"R_|,-+*,-+*,*-$. `a*,bc,lm,,|_9*`abc _4 **/`a  { _l+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+`2 #3:CJV]faldel _+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+C`" DM]foxades _XDM,+E*,FG` a de _V$*!*HI*J**d*` " a $_H *) (KYLMN O` '( KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK ^G=~Beewin32ole/win32ole.jarPK hZG= META-INF/PK gZG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_9]Lw}0 xFIiWH9I}EHX"\PR{;Vg`*i]cj6C|fTFAPv#I_QBɻqERrPh^!Dzn+H^~I*o Vvpq*6GG6ywCyp;An1RrG?~(/zZ>kg!۱VGг<QdPK YG=5w META-INF/JacobVersion.propertiesS(Q00WO.Q0204P0424"]S^.CSC+ +S#gj^Ԣ<[C=C3^̜ĒT[s]IEPsc0LYfIjQb H9/PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK YG=?bHcom/jacob/com/Dispatch.class՚{`\UgGL2ISL2-m!M˰m6i ngnLMuWP*  +K* FZ|sEW`wW]W]X\w=}Ls?gΝ{o~V?W@;~(wOhSzEZ-O_x>o?/C#@oDZ--~+xG(hGz' @ B -ZpƒK|^R%~M]7й}S?'Pٕ R0 'e[ra,+ rV]X2TElmHR#]R^3T!5%eGsxQc\_R#)9G>Ԭ6a:)㙂ˬ;HHqGO-BW'c$K`qvFex;MQhs;U.dW dz'>#ytY@S:\ewGgԌc bm"xMLɗxfAr.TqRcdpu@LIK1*3J9E"xn1)0Nyٵ!-:s8.ѝqЉly[Sí6h18;K3EC/bxIFWw̓t(fTU+y^flwF}֢6 %N-w-2t;DV!$2dw%1,AgɑBuLtr/uNfUqJXHعb]F`;[E`zFS i5;$ggA@:^C̑qękXU.=!'{0 3N a'R{[ʉ^ ', @'_XN0)&pA|u2JV/6Ь3nD.|V`x~u2{7'ۚo4ʥp2gI2?yI9>u8L ]8Jr fe}/֚I@wsm FaË2So߷06\厅b wBcτr̩|&\ߗ% )z`XyvoptYDIeb/ I-%x:-J东)tNYFpZɬft:ELT(LGJèJ )'9GgT2Gae*''p \!ZMeT].U1@Rg} jROƲgKF T&ݕ4=zDZ$'ujTVtZ.J A8%u"4-6zx/-Oő<psS Ho&Qx$ŵBWdjnķgdw:)7kR E= ]kآ y:fzCt*F|gZxMnB*˄Ԩ!ߟetkmÛVp6 p^MwxVw}.^^ߎםwхt3LT!lMxu.'0VTlƲ #6mU@m .CfNlϵRkpzPC A[csJ rI_(C؅J]zU6t@֫'lBTVH좱kzKqbθQ.:%zpc*}%vF` lAG4@\j\vb00Dه0ػ*D'lJ N{ 2 +aF0*sD6PmZͳjmaf-lmħaObt]pft 4@մz$nxͬChd\& X2cb2+k1Eauff4m}͋Ze^;`ah8f/#og~ !,Wt:QJaW]ƙh4ÇaDTlEVa!1Z [¬5Uz"4[v=3bpFIbEBa.ba((3&&()JmRۍѣ@M3UmQfo9g[&_B/,efI >LTMbxiY} A7σnyngLa'*ЩW* BŅUOqzRTh&(zF=7_W1NoDQA7ו&av'DELNRFAOmŀ?3u!!š[0ڢIY z+i.4q&đ8RGjbHOPO2ڇ14T%A_kK8b#8b#8b#"ݍ5 ~Zl vY!cTAL5ȑ8rGnm#q6Lk`ͧcǰ?;|y+\Ƞ .cD5].tp: ܅Bw\XP2 F@ qM,R4ٽ^ooe?B()(M*76QPS(h E?a5E,`. > DAaQ3Q0R6 Ec6QPC:(Y(C4!>DA Q02(hB "& jQ+«6QPsa5lC5}DČ*ExnNRRLR(UR6RZߔY1$BnQ\Z2: LS3!ZCckqe؋F75!}NK9_#kJ#Gsy=7v.:զ[8R;rв=paa"R}8(\:aJ7=`I6=B|zxQxYg4giދ4{Fx+3'+d_b-5q9ˌ#R֯%8Cxyޓ"<v1EVQ8i`O015a!vV KrZ0xRɩ \b ֈ__%R4bό$E .I5پmwA~Ήjf) Ii *m"|iH`D8 i6"7,#mjr-|$~{I]d40QZp#$hYZߚ^F퇩|-_®u%}VĠeJWPUzFVbiZ棰>=>2;/]g+*% {ďUE8?m"ӁNwPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK YG= AMETA-INF/PK YG=!Y+META-INF/MANIFEST.MFPK YG=5w _META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A6com/jacob/PK 5`.=A^com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_ com/jacob/com/Automation.classPK 5`.=_5? <com/jacob/com/ComException.classPK 5`.=L듄,$!com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!l&com/jacob/com/DateUtilities.classPK YG=?bH*com/jacob/com/Dispatch.classPK 5`.=F "z;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &[@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)xEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!%Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!,Jcom/jacob/com/Documentation.classPK q/=2\h*Lcom/jacob/com/EnumVariant.classPK 5`.=VӴhYOcom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Ucom/jacob/com/InvocationProxy.classPK 5`.=qK .KXcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["c^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:lcom/jacob/com/MainSTA.classPK 5`.=6T3+ mcom/jacob/com/NotImplementedException.classPK ]/=s-^Yncom/jacob/com/Pointer.classPK 5`.=(pcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK hZG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK hZG=/p6:':')org/jruby/ext/win32ole/RubyWIN32OLE.class1w P 3 3  3 3  3   3  3 3  ; ; ; 3 3   3  3  3  3 3    0   3 3 8                      ; K 3! 3" 3#$EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;dispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType returnValue makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ]^ WX% &'( ) *+, -. /0 1 23 456 78 9 :; <= >? @AB CDcom/jacob/com/Dispatch ]E = FG H IJ K LM NO P Q ST QRjava/lang/ObjectR H ST <U VW java/lang/Boolean X. YZ#org/jruby/ext/win32ole/RubyWIN32OLE[ \] ]hjava/util/Date java/lang/Number ^H _`java/lang/String abc de f. ij gh iH jD klm no pq rs tu{{ vG}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ] UV YZ [\org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)JcallO-(Lcom/jacob/com/Dispatch;I)Ljava/lang/Object;callD(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3PQRST UVWXYZ[\]^_R *+,*`$! %a  bc de fg]h_\ *+,*-`*, -a* bc de fg WXij_/*`0a bcWk_@ +*`6a bc lmnopq_1+N*::,+- W- `;<@AB)C,Ea> rs1bc1lm1tu,de#vwnoxy_A- :* :,6+*+* `KLMOP.SaRAbcAlmAz{A|{A}{9~1R*Zn oI_m,2N*Y-*`Y []a*bclm| noIZ_E*+,`ba bclm|noIZy_\ *+,--`ha4 bc lm z{ |{ {no_|,,2N-*+--d,*+-,`m o$ra*,bc,lm,| #noIZk_G* + ` wyabclmno_c,N+*-! ` ~a*bclm{no[sI_w,:*-"#+ `a4bclm{r{no[sIy_] *+,-`a4 bc lm z{ |{ }{no_],2N*+-,`  a*bclm| noIZ_%*-$: :*,%W+ `a>%bc%lm%%|RT_ ;- :,6* :*&: * ': + ` 1ap ;bc;lm;z{;|{;}{;Z3~,Z$R T 1 s _B ( `abcZ_5+>d)d*:6d+2"S` ,2a>Z5bc55Z2Z R_4++=)*N6+,":-S-`" &,2a>&Z4bc4~/Z"R_|,-+*,-+*,*-$. `a*,bc,lm,,|_9*`abc _4 **/`a  { _l+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+`2 #3:CJV]faldel _+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+C`" DM]foxades _XDM,+E*,FG` a de _V$*!*HI*J**d*` " a $_H *) (KYLMN O` '( KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK hZG=C}f}fwin32ole/win32ole.jarPK 9UG= META-INF/PK 8UG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK ' d$_;]BtwN.%{`Q +TU–ſ3L<'5[L8D;ß))'ۧmB)uU9?2^D %jv֨4>lgPTM sT_ 2't9\Rޑ_$ v>;L쇱]Ϩ:`1~x܂?&ۀw v1k ,RZ/oPK 2UG=Lx META-INF/JacobVersion.properties5̱ 0=w8j]Y t.90PĴol|`#w`"O r=[NjˣZMkC,-6$ܡCY̒ٲVoPK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK 2UG=Hu&Gcom/jacob/com/Dispatch.class՚{`ŝ]=Ȏ-[Dmc#!bqcq0FZ d$ىC&= #= I@q^ZZWΎP?ߞ,@ v ?;~wiE?^~ -^7Z{?v~~^!/y?}_~gN{4-)үh^ m6~ZZh!Bx%%B]=];{z:ع}{W#PڑIR:/e[-r~$f9O.nW"6y|(1vKr{t.ONJƲ4Kv&U))=7M(s՝};۷m%P9ֳkcح}[[W;ό-3VZMyvAtӳ>N7 ĎLw%r.9'Jɔ1R)l/H2ܘb f[\^Nl޼y4 TųclnI@KPͰo>;*LWc|r()g T3 8M׌X:/g$ +.I|e}]Е1XRo]îX"^eN %X/sLg n"bI#̞ǙqܓFkHf8_ctfxfAv.q,RqwDLH[12=Y5AjXn3*0uٳ)% 'ڳ8/љyʉlq6[Sg­ie,bqu΄+ 8>Ms1'鮋mVJ$40 *6rlflwZҢf %N--t:DVA$2hw32bFV6# V4&RC[tIɸ3, ;35~A^B {-/,Plgxg]J>G0zhӐ'GͰ}-Dw7  *'LO \(jT[=b&yӼe>&@#4ky`t>)s9?ņQM;rvɳlX2 %qM_S,Sww6?I@7#@ $GI-k(5S0K=Mlc0M^xS(q(5 WP^`8/)-dG{O͌g$}XI]Lp5#WB?Y;4@@R)yXJgGtso\Sl ׫ DFEә|T^x*dR:*'9cTE蘔F弜Hfo[D4җɬ#:YH%,F)}QMrdZe2 ,3y֛έ:~#d$'D4I=%Ÿ=iq"lwκK]~Ń->Hr8 .x7-nU#\uʛVk۞9ك{pTW1u&+O!GwPO_W}R*iZ=/b{>mBT!חarlqXnK ka6k1}ۗW`}.Q3~*m2܎}q?cم؟P) p=قe?;lZmtc+J,A!t7v:n (qCkƦ)Pz |)?MEb9CAa5܈.J J*Phm:NvvyϋC qh.?:к74=Є"ʥ9PzXRxa)z8l (B 2>a@#`~ Jq(CŏQVIRnvRF]eH]V[@3;F׭jmaf-lmƻTX.ݯxbt]q!ft 76ii1#axʹru2a.aQH2UJpqSe? FEeRYǡ0"4g!aRqץ`)^vxOA@0<KLDVTi21(%~^e!-o aw3 KwԂHPK(bW7s0 C^Yi65AM`MTj{p^jAЪ%T`ʰhUP"TP@hE5 ,3 dwqydqo,ҿRqɳb޲.0:ԍ@lTrJ.S q-e":eFQFF?;L?_Ո#>w޺ep\OGB94Fsg=8TmL "h3o3 rr\{/ITL2KMo4_J$|l޷?jOIRB?ˍGP9ON&^"戄bJP2JM ]Mwӌ2Gih4MhfL~c P? 走{BnOL>~?g PjUĕ*..AQiT*\'&(z-拿ɣpE+Q \ [/~M4Di0DEL6ARFOmŰ  ~ Q Q@k5Bs7 m\,ia*DZ u#q:TǑ}J w>lRMS5C7 {@vqj#6q&8bGlbv/ּ # <@3؁rOg܋} Ȃ9r3Gn#73dZk>~4g/tp #BRqaH5]h.qڸ m܅6Bw\ZQ0rшCļM ~2 FfGAT9h5(Y(&C(z& jgm#vQdMQЄ'# (!M|2 FM#WlxnQsQ02(hB"& j2 FFA DAͅg7`j3%Lɘ] xܺUÁkxخ8G-"VJQ mz 2},sxbMiNFiMKWxRӕ*JMW0<AOM(\W=ͨybXBXZj9_-O(jZP<SL{/j{hoF.:զiV(N#fSL*B,yg+oP%閇9#L<ėG/fC<= O2 5LFېv u EgAP}صv ChatssNB y2T, 5)@NE"Z/03&&P˰Dx|!gnɨ;]X&8O iĈ> !5a^«oR(<&;|,S#XVoHrZg_:rt֊ j%R6bFf-gHR v]jm_9'x2RUը]gLsEDU'-EHå&XgF!t< +xjšD}\ueKj<Q<&e{jӍx/Fސĵ_cbqj;O@8rV[9~+o<2uw#-(4f[ gu}l5_@ߴ1o,~hP#Dv/-"-S-Zi#<Ҵdf'wfo}% fI 4OA3&~9~ME[PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK 2UG= AMETA-INF/PK 1UG=.N+META-INF/MANIFEST.MFPK 2UG=Lx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK 2UG=Hu&G*com/jacob/com/Dispatch.classPK 5`.=F "c;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &D@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)aEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Hcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴhBOcom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .4Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["L^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Yqncom/jacob/com/Pointer.classPK 5`.=(vpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK 9UG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK 9UG=P s's')org/jruby/ext/win32ole/RubyWIN32OLE.class1x P 3 3  3 3    3  3 3  ; ; ; 3 3   3  3  3  3 3  3   0   3 3 8               ; K! 3" 3# 3$%EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ]^ WX& '() * +,- ./ 01 2 34 567 89 : ;< => =? @AB CDcom/jacob/com/Dispatch ]E = FG H IJ K LM NO P Q ST QRjava/lang/ObjectR H ST UV WX java/lang/Boolean Y/ Z[#org/jruby/ext/win32ole/RubyWIN32OLE\ ]^ ]hjava/util/Date java/lang/Number _H `ajava/lang/String bcd ef g/ ij hi jH kD lmn op qr st uv{{ wG}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ] UV YZ [\org/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callO>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3PQRST UVWXYZ[\]^_R *+,*`$! %a  bc de fg]h_\ *+,*-`*, -a* bc de fg WXij_/*`0a bcWk_@ +*`6a bc lmnopq_1+N*::,+- W- `;<@AB)C,Ea> rs1bc1lm1tu,de#vwnoxy_ B- :* :,6*:*:+ `KLMPQ+S8Uaf (zsBbcBlmB{|B}|B~|:2R+Z8 zsn oI_m,2N*Y-*`Z \^a*bclm} noIZ_E*+,`ca bclm}noIZy_\ *+,--`ia4 bc lm {| }| |no_|,,2N-*+--d,*+-,`n p$sa*,bc,lm,} #noIZk_G*+ ` xzabclmno_c,N+*- ` a*bclm|no[sI_w,:*-!"+ `a4bclm|r|no[sIy_] *+,-`a4 bc lm {| }| ~|no_],2N*+-,`  a*bclm} noIZ_%*-#: :*,$W+ `a>%bc%lm%%}RT_ ;- :,6* :*%: * &: + ` 1ap ;bc;lm;{|;}|;~|;Z3,Z$R T 1 zs _B ' `abcZ_5+>d(d):6d+2!S` ,2a>Z5bc55Z2Z R_4+*=()N6++!:-S-`" &,2a>&Z4bc4/Z"R_0-+*,,-*,*-#.:+ `&a40bc0lm00}& s_9*`abc _4 *)/`a  | _l+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+`2 #3:CJV]faldel _+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+C`" DM]foxades _XDM,+E*,FG` a de _V$*!*HI*J**d*`  "a $_H )( 'KYLMN O` '( KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK 9UG=vsswin32ole/win32ole.jarPK QG= META-INF/PK QG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 9;[PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK F=h|Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f 5a'7ҵ KF8[_ZhmnАme%$xn]=a]W~{=7qs<~:{tPVw* ߧ?A~??c_ ]|j/P"W?_s>x/KM+)j?|*}F/%}k?B ^T*^eyYc>1?={wnڵw} XAUO6/ș9=xePI)dA)PՃ-jU>Xݦ Q$ʾ>yTJɧ AX.;GIu򊴜^_ȥ2kTm޵K{{vuoϠ~{DvtowwnLdGW+CΥ\㢣g'Y~a**EZ` dHwTFݭi 96R*h\ʏɅ*ZN]Nv\q/ȉk6cy$xAC"%FB铵5 +1QkcB_RC)%Ǡ1լ1_i:&㙂鋥v\MeqWwU+c1eU]#W%˦JBI^Е4A1Ld,pa$ڞ 8#JR7C[Q6gk+-T656^E&?m.rij Z P-\sHC݉1!gnED|K]q͸SrCtAiy4ѝyǏ%ndKv9:n=t.S(&Wt*Ћ']>9C1q8ht08H.nP` M%QJ׌`{(t;2ڭ6c(qky(ԕ :Ot,";-nZFʪjfr%Q 3Xfůg4٘qcx ?Rno>npV<:? ?6_8ŴrWQRl턋sA:2JmvЬI1tQ`F-`%͎+3RIXϙ5;J:˴:L$UߊLű$l_lZ{%;J=Mlc0M ^xK(|8pʡbw|/.ܗȃו1}4?ώҥR.? |,dUyۧ2,sJл/i|6[5%dVG3BTNPhfMe4].U'#jX- rA1"n$OFxKF T&ݛ*$9K}B|t, )Iz2T ACA8 X]ճ ` jK" T| 3j.76P |?! aᏨ`.8S߰-\˅5^NNM}=^ME{E.z'SI6JiuE4֋T ՖC~ ˯lsX^* a8V.g\7߅5~v=Qf ?4j ?/g,7bBψ$6v/xVl²OA@} ja3l?I6n\#,Ũ2;p$CNT7?nZ]~ hQaYFh |456Կ/:vS`,W gj2yXN&qw _A^l!UI7Eqzi<>~pSQ[ Ԟg%zZ?F$SYj 3ģo""ED _7ZR+@jEUEjMx޷Q@E tiO-\tZ^!sao1 ?/VgHd߮u }Ǡw)nwvjX9un:S[) W؍ 4BW٩U^WUڴJPi*T,ּ޵W&Vjܠ7XlD=<_hR ִ:?4H,?X.c#V_0DCT0DC3PX+Sii>hh4~[A_i "6p@jH-E D[ՙ!/r/aۏ1 2Ut]FEܦ111T|*qػTxvk?Ӱ5a&DS v.r@n#SϱWoc~vq?X Wع]H. if ]….BpK%\.t  Tk3_L Ǡu G13# 0[ͣQ02-vI(xucd3%ѱ͜ {\y=obWnaI<*NTdT,C7 ʹQKiFCS ]dؔ̑jzn r[4g Zny18GHP\هimxq : Y5 fqoO(P܅v7jb[mīe*T0>|1SlEm#?G>kiRFh1,kD\<$GH,H=C"@i>i`F: oJZ:i읻C;~Sw N);Ed{M1h=W6#8ҏ" و0k~)#=fq0oU;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=3*+META-INF/MANIFEST.MFPK F=pox aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK F=h|G*com/jacob/com/Dispatch.classPK 5`.=F "T;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &5@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)REcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴh3Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .%Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["=^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Ybncom/jacob/com/Pointer.classPK 5`.=(gpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK QG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK QG=w@o)o))org/jruby/ext/win32ole/RubyWIN32OLE.class1 \ A A ! A A    ! A A ! !  A ! A A  I I I A A ! ! A ! A ! A ! A A   ! A !  >  !" A#$ A%& F' () * +, +- +. +/ +0 +1 +2 34 35 36 78 I9:; Y A>?EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;countItimeJ((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)Vstart getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ij cd@ AB CD gh ef EFjava/lang/StringBuilder iT: GH GI, C: GJ KLM NOP QRS T UVW XY Z[ \ ]^ _`a bc d ef gh gi jkl mLcom/jacob/com/Dispatch iO = no p qr s tu vw x y _` ]^java/lang/Objectz p {| g} ~ java/lang/Boolean Y #org/jruby/ext/win32ole/RubyWIN32OLE  itjava/util/Date java/lang/Number p java/lang/String   Y vw  p L    B {{ o}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses aborg/jruby/RubyObjectjava/lang/SystemnanoTime()J getTypeInfo()Lcom/jacob/com/TypeInfo;outLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)Vorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaStringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!A\]^_` abcdefghijkR *+,*l$! %m  no pq rsitkY*+,*-7-WeaY`p) Y    l*, ./0"2X3m4YnoYpqYrsYcdIuhvwk/*l6m nocxk@ +*l<m no yz{|}~k1+N*::,+-W-lABFGH)I,Km> 1no1yz1,pq#{|k B-:*:,6*:*:+lQRSVW+Y8[mf (BnoByzBBB:2^+f8 { |Ikm,2 N*!Y-"#*l` bdm*noyz {|IZkE*+,$lim noyz{|IZk\ *+,--%lom4 no yz   {|k|,,2&N-'(*+--)d*,+*+-,,lt v$ym*,no,yz, #{|IZxkG*-+l ~mnoyz{|kc,&N+*-.l m*noyz{|[sIkw,&:*-/0+lm4noyz{|[sIk] *+,-%lm4 no yz   {|k],2&N*+-,+l  m*noyz {|IZk%*-1: :*,2W+lm>%no%yz%%^`k ;-:,6*:*3: * 4: + l 1mp ;no;yz;;;;f3,f$^ ` 1 kB 5 lmnofk5+>d6d7:6d+2/Sl ,2m>f5no55f2f ^k4+8=67N6+9/:-S-l" &,2m>&f4no4/f"^k0-+*,:;*,*-1<:+l&m40no0yz00& k9*lmno k4 *7=lm  kl+*+>*+>?@+!AY*B+!C+D *+DE+F*+FGH+I *+IJ*+l2 #3:CJV]fmlpql k+*+Kk YYkkkPb@k7*+L@AY*B+MC*+NE*+OH*+PJ*+Ql" DM]foxmpq kXRM,+S*,TUl  m pq kV$*!*VW*X(**)d**l"m $kH 76 5YYZ[ l '(= YPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK QG=6=g||win32ole/win32ole.jarPK PG= META-INF/PK PG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 9;[PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK F=h|Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f 5a'7ҵ KF8[_ZhmnАme%$xn]=a]W~{=7qs<~:{tPVw* ߧ?A~??c_ ]|j/P"W?_s>x/KM+)j?|*}F/%}k?B ^T*^eyYc>1?={wnڵw} XAUO6/ș9=xePI)dA)PՃ-jU>Xݦ Q$ʾ>yTJɧ AX.;GIu򊴜^_ȥ2kTm޵K{{vuoϠ~{DvtowwnLdGW+CΥ\㢣g'Y~a**EZ` dHwTFݭi 96R*h\ʏɅ*ZN]Nv\q/ȉk6cy$xAC"%FB铵5 +1QkcB_RC)%Ǡ1լ1_i:&㙂鋥v\MeqWwU+c1eU]#W%˦JBI^Е4A1Ld,pa$ڞ 8#JR7C[Q6gk+-T656^E&?m.rij Z P-\sHC݉1!gnED|K]q͸SrCtAiy4ѝyǏ%ndKv9:n=t.S(&Wt*Ћ']>9C1q8ht08H.nP` M%QJ׌`{(t;2ڭ6c(qky(ԕ :Ot,";-nZFʪjfr%Q 3Xfůg4٘qcx ?Rno>npV<:? ?6_8ŴrWQRl턋sA:2JmvЬI1tQ`F-`%͎+3RIXϙ5;J:˴:L$UߊLű$l_lZ{%;J=Mlc0M ^xK(|8pʡbw|/.ܗȃו1}4?ώҥR.? |,dUyۧ2,sJл/i|6[5%dVG3BTNPhfMe4].U'#jX- rA1"n$OFxKF T&ݛ*$9K}B|t, )Iz2T ACA8 X]ճ ` jK" T| 3j.76P |?! aᏨ`.8S߰-\˅5^NNM}=^ME{E.z'SI6JiuE4֋T ՖC~ ˯lsX^* a8V.g\7߅5~v=Qf ?4j ?/g,7bBψ$6v/xVl²OA@} ja3l?I6n\#,Ũ2;p$CNT7?nZ]~ hQaYFh |456Կ/:vS`,W gj2yXN&qw _A^l!UI7Eqzi<>~pSQ[ Ԟg%zZ?F$SYj 3ģo""ED _7ZR+@jEUEjMx޷Q@E tiO-\tZ^!sao1 ?/VgHd߮u }Ǡw)nwvjX9un:S[) W؍ 4BW٩U^WUڴJPi*T,ּ޵W&Vjܠ7XlD=<_hR ִ:?4H,?X.c#V_0DCT0DC3PX+Sii>hh4~[A_i "6p@jH-E D[ՙ!/r/aۏ1 2Ut]FEܦ111T|*qػTxvk?Ӱ5a&DS v.r@n#SϱWoc~vq?X Wع]H. if ]….BpK%\.t  Tk3_L Ǡu G13# 0[ͣQ02-vI(xucd3%ѱ͜ {\y=obWnaI<*NTdT,C7 ʹQKiFCS ]dؔ̑jzn r[4g Zny18GHP\هimxq : Y5 fqoO(P܅v7jb[mīe*T0>|1SlEm#?G>kiRFh1,kD\<$GH,H=C"@i>i`F: oJZ:i읻C;~Sw N);Ed{M1h=W6#8ҏ" و0k~)#=fq0oU;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=3*+META-INF/MANIFEST.MFPK F=pox aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK F=h|G*com/jacob/com/Dispatch.classPK 5`.=F "T;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &5@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)REcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴh3Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .%Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["=^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Ybncom/jacob/com/Pointer.classPK 5`.=(gpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK PG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK PG=]B(()org/jruby/ext/win32ole/RubyWIN32OLE.class1 X = =        = =    =  = =  E E E = =   =  =  =  = =       =   :   = = B   !" !# !$ !% !& !' !( )* )+ ), -. E/01 U =45EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)VstartJ getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ab _`6 78 9: ;<java/lang/StringBuilder aT: => =? @AB CDE FGH I JKL MN OP Q RS TUV WX Y Z[ \] \^ _`a bAcom/jacob/com/Dispatch aD = cd e fg h ij kl m n [\ YZjava/lang/Objecto e pq \r st java/lang/Boolean uN vw#org/jruby/ext/win32ole/RubyWIN32OLEx yz aljava/util/Date java/lang/Number {e |}java/lang/String ~  N op  e A    8 {{ d}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ]^org/jruby/RubyObjectjava/lang/SystemnanoTime()J getTypeInfo()Lcom/jacob/com/TypeInfo;outLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)Vorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaStringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!=XYZ[\ ]^_`abcR *+,*d$! %e  fg hi jkalc4*+,*-7-WY e d(* ,-.3/e44fg4hi4jk4_`$mnopc/*d2e fg_qc@ +*d8e fg rstuvwc1+N*::,+-W-d=>BCD)E,Ge> xy1fg1rs1z{,hi#|}tu~c B-:*:,6*:*:+dMNORS+U8Wef (yBfgBrsBBB:2Z+8 yt uIcm,2N*Y-*d\ ^`e*fgrs tuIZcE*+, dee fgrstuIZc\ *+,--!dke4 fg rs   tuc|,,2"N-#$*+--%d&,'*+-,(dp r$ue*,fg,rs, #tuIZqcG*)+d z|efgrstucc,"N+*-*d e*fgrstu[sIcw,":*-+,+de4fgrsxtu[sIc] *+,-!de4 fg rs   tuc],2"N*+-,'d  e*fgrs tuIZc%*--: :*,.W+de>%fg%rs%%Z\c ;-:,6*:*/: * 0: + d 1ep ;fg;rs;;;;3,$Z \ 1 y cB 1 defgc5+>d2d3:6d+2+Sd ,2e>5fg552 Zc4+4=23N6+5+:-S-d" &,2e>&4fg4/"Zc0-+*,67*,*--8:+d&e40fg0rs00& yc9*defg c4 *39de  cl+*+:*+:;<+=Y*>+?+@ *+@A+B*+BCD+E *+EF*+d2 #3:CJV]felhil c+*+Gk YYkkkPb@k7*+H<=Y*>+I?*+JA*+KD*+LF*+Md" DM]foxehiy cXNM,+O*,PQd  e hi cV$*!*RS*T$**%d&*d"e $c832 1UYVWd 3 UPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK PG=3§%j%jwin32ole/win32ole.jarPK PG= META-INF/PK PG=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 9;[PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK F=h|Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f 5a'7ҵ KF8[_ZhmnАme%$xn]=a]W~{=7qs<~:{tPVw* ߧ?A~??c_ ]|j/P"W?_s>x/KM+)j?|*}F/%}k?B ^T*^eyYc>1?={wnڵw} XAUO6/ș9=xePI)dA)PՃ-jU>Xݦ Q$ʾ>yTJɧ AX.;GIu򊴜^_ȥ2kTm޵K{{vuoϠ~{DvtowwnLdGW+CΥ\㢣g'Y~a**EZ` dHwTFݭi 96R*h\ʏɅ*ZN]Nv\q/ȉk6cy$xAC"%FB铵5 +1QkcB_RC)%Ǡ1լ1_i:&㙂鋥v\MeqWwU+c1eU]#W%˦JBI^Е4A1Ld,pa$ڞ 8#JR7C[Q6gk+-T656^E&?m.rij Z P-\sHC݉1!gnED|K]q͸SrCtAiy4ѝyǏ%ndKv9:n=t.S(&Wt*Ћ']>9C1q8ht08H.nP` M%QJ׌`{(t;2ڭ6c(qky(ԕ :Ot,";-nZFʪjfr%Q 3Xfůg4٘qcx ?Rno>npV<:? ?6_8ŴrWQRl턋sA:2JmvЬI1tQ`F-`%͎+3RIXϙ5;J:˴:L$UߊLű$l_lZ{%;J=Mlc0M ^xK(|8pʡbw|/.ܗȃו1}4?ώҥR.? |,dUyۧ2,sJл/i|6[5%dVG3BTNPhfMe4].U'#jX- rA1"n$OFxKF T&ݛ*$9K}B|t, )Iz2T ACA8 X]ճ ` jK" T| 3j.76P |?! aᏨ`.8S߰-\˅5^NNM}=^ME{E.z'SI6JiuE4֋T ՖC~ ˯lsX^* a8V.g\7߅5~v=Qf ?4j ?/g,7bBψ$6v/xVl²OA@} ja3l?I6n\#,Ũ2;p$CNT7?nZ]~ hQaYFh |456Կ/:vS`,W gj2yXN&qw _A^l!UI7Eqzi<>~pSQ[ Ԟg%zZ?F$SYj 3ģo""ED _7ZR+@jEUEjMx޷Q@E tiO-\tZ^!sao1 ?/VgHd߮u }Ǡw)nwvjX9un:S[) W؍ 4BW٩U^WUڴJPi*T,ּ޵W&Vjܠ7XlD=<_hR ִ:?4H,?X.c#V_0DCT0DC3PX+Sii>hh4~[A_i "6p@jH-E D[ՙ!/r/aۏ1 2Ut]FEܦ111T|*qػTxvk?Ӱ5a&DS v.r@n#SϱWoc~vq?X Wع]H. if ]….BpK%\.t  Tk3_L Ǡu G13# 0[ͣQ02-vI(xucd3%ѱ͜ {\y=obWnaI<*NTdT,C7 ʹQKiFCS ]dؔ̑jzn r[4g Zny18GHP\هimxq : Y5 fqoO(P܅v7jb[mīe*T0>|1SlEm#?G>kiRFh1,kD\<$GH,H=C"@i>i`F: oJZ:i읻C;~Sw N);Ed{M1h=W6#8ҏ" و0k~)#=fq0oU;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=3*+META-INF/MANIFEST.MFPK F=pox aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK F=h|G*com/jacob/com/Dispatch.classPK 5`.=F "T;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &5@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)REcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴh3Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .%Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["=^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Ybncom/jacob/com/Pointer.classPK 5`.=(gpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK PG=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK PG=]B(()org/jruby/ext/win32ole/RubyWIN32OLE.class1 X = =        = =    =  = =  E E E = =   =  =  =  = =       =   :   = = B   !" !# !$ !% !& !' !( )* )+ ), -. E/01 U =45EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)VstartJ getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ab _`6 78 9: ;<java/lang/StringBuilder aT: => =? @AB CDE FGH I JKL MN OP Q RS TUV WX Y Z[ \] \^ _`a bAcom/jacob/com/Dispatch aD = cd e fg h ij kl m n [\ YZjava/lang/Objecto e pq \r st java/lang/Boolean uN vw#org/jruby/ext/win32ole/RubyWIN32OLEx yz aljava/util/Date java/lang/Number {e |}java/lang/String ~  N op  e A    8 {{ d}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses ]^org/jruby/RubyObjectjava/lang/SystemnanoTime()J getTypeInfo()Lcom/jacob/com/TypeInfo;outLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toString()Ljava/lang/String;java/io/PrintStreamprintln(Ljava/lang/String;)Vorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaStringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!=XYZ[\ ]^_`abcR *+,*d$! %e  fg hi jkalc4*+,*-7-WY e d(* ,-.3/e44fg4hi4jk4_`$mnopc/*d2e fg_qc@ +*d8e fg rstuvwc1+N*::,+-W-d=>BCD)E,Ge> xy1fg1rs1z{,hi#|}tu~c B-:*:,6*:*:+dMNORS+U8Wef (yBfgBrsBBB:2Z+8 yt uIcm,2N*Y-*d\ ^`e*fgrs tuIZcE*+, dee fgrstuIZc\ *+,--!dke4 fg rs   tuc|,,2"N-#$*+--%d&,'*+-,(dp r$ue*,fg,rs, #tuIZqcG*)+d z|efgrstucc,"N+*-*d e*fgrstu[sIcw,":*-+,+de4fgrsxtu[sIc] *+,-!de4 fg rs   tuc],2"N*+-,'d  e*fgrs tuIZc%*--: :*,.W+de>%fg%rs%%Z\c ;-:,6*:*/: * 0: + d 1ep ;fg;rs;;;;3,$Z \ 1 y cB 1 defgc5+>d2d3:6d+2+Sd ,2e>5fg552 Zc4+4=23N6+5+:-S-d" &,2e>&4fg4/"Zc0-+*,67*,*--8:+d&e40fg0rs00& yc9*defg c4 *39de  cl+*+:*+:;<+=Y*>+?+@ *+@A+B*+BCD+E *+EF*+d2 #3:CJV]felhil c+*+Gk YYkkkPb@k7*+H<=Y*>+I?*+JA*+KD*+LF*+Md" DM]foxehiy cXNM,+O*,PQd  e hi cV$*!*RS*T$**%d&*d"e $c832 1UYVWd 3 UPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK PG=ywin32ole/win32ole.jarPK lF= META-INF/PK kF=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 9;[PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK F=h|Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f 5a'7ҵ KF8[_ZhmnАme%$xn]=a]W~{=7qs<~:{tPVw* ߧ?A~??c_ ]|j/P"W?_s>x/KM+)j?|*}F/%}k?B ^T*^eyYc>1?={wnڵw} XAUO6/ș9=xePI)dA)PՃ-jU>Xݦ Q$ʾ>yTJɧ AX.;GIu򊴜^_ȥ2kTm޵K{{vuoϠ~{DvtowwnLdGW+CΥ\㢣g'Y~a**EZ` dHwTFݭi 96R*h\ʏɅ*ZN]Nv\q/ȉk6cy$xAC"%FB铵5 +1QkcB_RC)%Ǡ1լ1_i:&㙂鋥v\MeqWwU+c1eU]#W%˦JBI^Е4A1Ld,pa$ڞ 8#JR7C[Q6gk+-T656^E&?m.rij Z P-\sHC݉1!gnED|K]q͸SrCtAiy4ѝyǏ%ndKv9:n=t.S(&Wt*Ћ']>9C1q8ht08H.nP` M%QJ׌`{(t;2ڭ6c(qky(ԕ :Ot,";-nZFʪjfr%Q 3Xfůg4٘qcx ?Rno>npV<:? ?6_8ŴrWQRl턋sA:2JmvЬI1tQ`F-`%͎+3RIXϙ5;J:˴:L$UߊLű$l_lZ{%;J=Mlc0M ^xK(|8pʡbw|/.ܗȃו1}4?ώҥR.? |,dUyۧ2,sJл/i|6[5%dVG3BTNPhfMe4].U'#jX- rA1"n$OFxKF T&ݛ*$9K}B|t, )Iz2T ACA8 X]ճ ` jK" T| 3j.76P |?! aᏨ`.8S߰-\˅5^NNM}=^ME{E.z'SI6JiuE4֋T ՖC~ ˯lsX^* a8V.g\7߅5~v=Qf ?4j ?/g,7bBψ$6v/xVl²OA@} ja3l?I6n\#,Ũ2;p$CNT7?nZ]~ hQaYFh |456Կ/:vS`,W gj2yXN&qw _A^l!UI7Eqzi<>~pSQ[ Ԟg%zZ?F$SYj 3ģo""ED _7ZR+@jEUEjMx޷Q@E tiO-\tZ^!sao1 ?/VgHd߮u }Ǡw)nwvjX9un:S[) W؍ 4BW٩U^WUڴJPi*T,ּ޵W&Vjܠ7XlD=<_hR ִ:?4H,?X.c#V_0DCT0DC3PX+Sii>hh4~[A_i "6p@jH-E D[ՙ!/r/aۏ1 2Ut]FEܦ111T|*qػTxvk?Ӱ5a&DS v.r@n#SϱWoc~vq?X Wع]H. if ]….BpK%\.t  Tk3_L Ǡu G13# 0[ͣQ02-vI(xucd3%ѱ͜ {\y=obWnaI<*NTdT,C7 ʹQKiFCS ]dؔ̑jzn r[4g Zny18GHP\هimxq : Y5 fqoO(P܅v7jb[mīe*T0>|1SlEm#?G>kiRFh1,kD\<$GH,H=C"@i>i`F: oJZ:i읻C;~Sw N);Ed{M1h=W6#8ҏ" و0k~)#=fq0oU;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=3*+META-INF/MANIFEST.MFPK F=pox aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK F=h|G*com/jacob/com/Dispatch.classPK 5`.=F "T;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &5@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)REcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴh3Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .%Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["=^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Ybncom/jacob/com/Pointer.classPK 5`.=(gpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK ÝF=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK ÝF=$'$')org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3    3  3 3  ; ; ; 3 3   3  3  3  3 3  3   0   3 3 8                     ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  !" # $%& '( )* + ,- ./0 12 3 45 67 68 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 6N OP java/lang/Boolean Q( RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _( cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsY B- :* :,6*:*:+ ZIJKNO+Q8S[f (tmB\]BfgBuvBwvBxv:yz2{P+|}8 tmh i~IYm,2N*Y-*ZX Z\[*\]fgw hi~IZYE*+,Za[ \]fgwhi~IZsY\ *+,--Zg[4 \] fg uv wv vhiY|,,2N-*+--d,*+-,Zl n$q[*,\],fg,w #hi~IZeYG*+ Z vx[\]fghiYc,N+*- Z }[*\]fgvhi[s~IYw,:*-!"+ Z[4\]fgvlvhi[s~IsY] *+,-Z[4 \] fg uv wv xvhiY],2N*+-,Z  [*\]fgw hi~IZY%*-#: :*,$W+ Z[>%\]%fg%%w{PRY ;- :,6* :*%: * &: + Z 1[p ;\];fg;uv;wv;xv;}3yz,|}${P R 1 tm YB ' Z[\]}Y5+>d(d):6d+2!SZ ,2[>}5\]55}2} {PY4+*=()N6++!:-S-Z" &,2[>&}4\]4yz/}"{PY0-+*,,-*,*-#.:+ Z&[40\]0fg00w& mY9*Z[\] Y4 *)/Z[  v Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z  "[ $Y8)( 'KYLMZ  KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK lF=,gم""win32ole/win32ole.jarPK ĝF= META-INF/PK ÝF=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 9;[PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK F=h|Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f 5a'7ҵ KF8[_ZhmnАme%$xn]=a]W~{=7qs<~:{tPVw* ߧ?A~??c_ ]|j/P"W?_s>x/KM+)j?|*}F/%}k?B ^T*^eyYc>1?={wnڵw} XAUO6/ș9=xePI)dA)PՃ-jU>Xݦ Q$ʾ>yTJɧ AX.;GIu򊴜^_ȥ2kTm޵K{{vuoϠ~{DvtowwnLdGW+CΥ\㢣g'Y~a**EZ` dHwTFݭi 96R*h\ʏɅ*ZN]Nv\q/ȉk6cy$xAC"%FB铵5 +1QkcB_RC)%Ǡ1լ1_i:&㙂鋥v\MeqWwU+c1eU]#W%˦JBI^Е4A1Ld,pa$ڞ 8#JR7C[Q6gk+-T656^E&?m.rij Z P-\sHC݉1!gnED|K]q͸SrCtAiy4ѝyǏ%ndKv9:n=t.S(&Wt*Ћ']>9C1q8ht08H.nP` M%QJ׌`{(t;2ڭ6c(qky(ԕ :Ot,";-nZFʪjfr%Q 3Xfůg4٘qcx ?Rno>npV<:? ?6_8ŴrWQRl턋sA:2JmvЬI1tQ`F-`%͎+3RIXϙ5;J:˴:L$UߊLű$l_lZ{%;J=Mlc0M ^xK(|8pʡbw|/.ܗȃו1}4?ώҥR.? |,dUyۧ2,sJл/i|6[5%dVG3BTNPhfMe4].U'#jX- rA1"n$OFxKF T&ݛ*$9K}B|t, )Iz2T ACA8 X]ճ ` jK" T| 3j.76P |?! aᏨ`.8S߰-\˅5^NNM}=^ME{E.z'SI6JiuE4֋T ՖC~ ˯lsX^* a8V.g\7߅5~v=Qf ?4j ?/g,7bBψ$6v/xVl²OA@} ja3l?I6n\#,Ũ2;p$CNT7?nZ]~ hQaYFh |456Կ/:vS`,W gj2yXN&qw _A^l!UI7Eqzi<>~pSQ[ Ԟg%zZ?F$SYj 3ģo""ED _7ZR+@jEUEjMx޷Q@E tiO-\tZ^!sao1 ?/VgHd߮u }Ǡw)nwvjX9un:S[) W؍ 4BW٩U^WUڴJPi*T,ּ޵W&Vjܠ7XlD=<_hR ִ:?4H,?X.c#V_0DCT0DC3PX+Sii>hh4~[A_i "6p@jH-E D[ՙ!/r/aۏ1 2Ut]FEܦ111T|*qػTxvk?Ӱ5a&DS v.r@n#SϱWoc~vq?X Wع]H. if ]….BpK%\.t  Tk3_L Ǡu G13# 0[ͣQ02-vI(xucd3%ѱ͜ {\y=obWnaI<*NTdT,C7 ʹQKiFCS ]dؔ̑jzn r[4g Zny18GHP\هimxq : Y5 fqoO(P܅v7jb[mīe*T0>|1SlEm#?G>kiRFh1,kD\<$GH,H=C"@i>i`F: oJZ:i읻C;~Sw N);Ed{M1h=W6#8ҏ" و0k~)#=fq0oU;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=3*+META-INF/MANIFEST.MFPK F=pox aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK F=h|G*com/jacob/com/Dispatch.classPK 5`.=F "T;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &5@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)REcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hLcom/jacob/com/EnumVariant.classPK 5`.=VӴh3Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .%Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["=^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Ybncom/jacob/com/Pointer.classPK 5`.=(gpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK ÝF=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK ÝF=$'$')org/jruby/ext/win32ole/RubyWIN32OLE.class1p N 3 3  3 3    3  3 3  ; ; ; 3 3   3  3  3  3 3  3   0   3 3 8                     ; K 3EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java WX UV  !" # $%& '( )* + ,- ./0 12 3 45 67 68 9:; <=com/jacob/com/Dispatch W> = ?@ A BC D EF GH I J QR OPjava/lang/ObjectK A LM 6N OP java/lang/Boolean Q( RS#org/jruby/ext/win32ole/RubyWIN32OLET UV Wbjava/util/Date java/lang/Number WA XYjava/lang/String Z[\ ]^ _( cd `a bA c= def gh ij kl mn{{ o@}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses W STorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObject toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)VendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;>(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Ljava/lang/Object;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant; booleanValue newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;intValue newFixnum(I)Lorg/jruby/RubyFixnum; newString*(Ljava/lang/String;)Lorg/jruby/RubyString;com/jacob/com/VariantgetType()S getBooleangetDate()Ljava/util/Date;getInt getString toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!3NOPQR STUVWXYR *+,*Z$! %[  \] ^_ `aWbY\ *+,*-Z(* +[* \] ^_ `a UVcdY/*Z.[ \]UeY@ +*Z4[ \] fghijkY1+N*::,+- W- Z9:>?@)A,C[> lm1\]1fg1no,^_#pqhirsY B- :* :,6*:*:+ ZIJKNO+Q8S[f (tmB\]BfgBuvBwvBxv:yz2{P+|}8 tmh i~IYm,2N*Y-*ZX Z\[*\]fgw hi~IZYE*+,Za[ \]fgwhi~IZsY\ *+,--Zg[4 \] fg uv wv vhiY|,,2N-*+--d,*+-,Zl n$q[*,\],fg,w #hi~IZeYG*+ Z vx[\]fghiYc,N+*- Z }[*\]fgvhi[s~IYw,:*-!"+ Z[4\]fgvlvhi[s~IsY] *+,-Z[4 \] fg uv wv xvhiY],2N*+-,Z  [*\]fgw hi~IZY%*-#: :*,$W+ Z[>%\]%fg%%w{PRY ;- :,6* :*%: * &: + Z 1[p ;\];fg;uv;wv;xv;}3yz,|}${P R 1 tm YB ' Z[\]}Y5+>d(d):6d+2!SZ ,2[>}5\]55}2} {PY4+*=()N6++!:-S-Z" &,2[>&}4\]4yz/}"{PY0-+*,,-*,*-#.:+ Z&[40\]0fg00w& mY9*Z[\] Y4 *)/Z[  v Yl+* +0*+012+3Y*4+5+6 *+67+8*+89:+; *+;<*+Z2 #3:CJV]f[l^_l Y+* +=k YYkkkPb@k7*+>23Y*4+?5*+@7*+A:*+B<*+CZ" DM]fox[^_m YXDM,+E*,FGZ [ ^_ YV$*!*HI*J**d*Z  "[ $Y8)( 'KYLMZ  KPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK ÝF=_l!%vp vp win32ole/win32ole.jarPK #F= META-INF/PK "F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK L&uS_ʺ›抿bّ QG5_[mϨ3Ko0^VO4p::eM9PK F=_x META-INF/JacobVersion.propertiesSOMQ00SO.Q0204P04252T5050RPN-P04U04225Rpv *K-*ϳ534J*IKI,I50Z 57hp d̒ԢfSC PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@\8GbW\a>s|i8Ǐ'=)ŭgX|ϩkh>x2?4|'شgX댚+pbPqeAX'Xo#??'AH|B5Z' mN]..|,3D#xPx'?h ϠZ,мփ!_u 43g3П[@8#']9&9dzWY}Ε οw,8']9ˁA s8Jr~*%mWOIVϼJZ H_SBGw]B3VaʓN?&O\W%?I2`/)ƟSFkyAkJX;` p8,r' Ͽgfoxzx~Kps7 wufx:ְ<O| pp (QTQi?Z5b!6ȌCD5'ֹ.= C"*7u0]"j3p'Bg<xN< x3O  <+Bq^:+/a(Gp`4㞰2`m Te+PCH]NL$dn={P \K6K 5ok/ ;OgM~D /?vf- J̣71W--6ٗ?GKB ā ץ#fC-JLY;:ދX$;/$-+.ٸc/hǷ „A8x [tcm8Rܾ݈Wn1Zfc0{` NfhE ^I A5UHgDJTB&kKLu7FERR'%,ñI# @F 'XK]3FĖS^YY,˂$)6S98 4 8 d:(H:8@isxqtX:$?r0==>gz܆>&`Z&4h4C rɟ3٩IvHgw1dxvhg3Lcw#ddwnv:UP@&, }>]\{C0wjfV5DГV"}ߙYϨ1‘ NpGRkW A_ݛY`1fIbdO[!4`iQ >esT:4>ŸnEѶ<ˁJ`|i*§[@4gqz$A^ ;mW`$yWR5(P|6G؜.SxZޙTA_4ê6(JFbEKEkoJk7&jN[ǂqΔ=prK;öe[Z6G>:$;9e:pϧi2d"k![NIE }ZTd r:T4間@b9 M6J^Z{uiR97bi2W&k $b_[&}n&-5n&[-L.Lq3 Y&n&,sLJ+癭 ˸RY_P} U`r9W{j,QLTV MeܬLSnU([sەMʝg=,>$egEiS(G7q0اb;!wb7-f+YNn+ wp{Ol-xӶE,]PUťXlUZ], \~mپ+ͻnj>2-kkS. p$L~ĹP | X@%i匀PK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK F= AMETA-INF/PK F=,p+META-INF/MANIFEST.MFPK F=_x aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A9com/jacob/PK 5`.=Aacom/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? ?com/jacob/com/ComException.classPK 5`.=L듄,$$com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!o&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "O;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &0@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)MEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh.Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK . Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["8^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y]ncom/jacob/com/Pointer.classPK 5`.=(bpcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK #F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK #F=I%%)org/jruby/ext/win32ole/RubyWIN32OLE.class1` G 2 2  2 2    2  2 2  2 2   2  2  2  2 2    2 2         D 2EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java PQ NO         !" #$ % &' () (* +,- ./com/jacob/com/Dispatch P0 z =1 23 4 56 7 89 :; < = JK HIjava/lang/Object> 4 ?@ (9 AB C DE F GH#org/jruby/ext/win32ole/RubyWIN32OLEI JK \] P[ LM N4 OP Q/ RS TUV WX YZ [\ ]^{{ _3}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses P LMorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!2GHIJK LMNOPQRR *+,*S$! %T  UV WX YZP[R\ *+,*-S(* +T* UV WX YZ NO\]R/*S.T UVN^R@ +*S4T UV _`abcdR1+N*::,+- W- S9:>?@)A,CT> ef1UV1_`1gh,WX#ijabklR B- :* :,6*:*:+ SIJKNO+Q8STf (mfBUVB_`BnoBpoBqo:rs2tI+uv8 mfa bwIxyzRm,2N*Y-*SX Z\T*UV_`p{ |}abwI~Z~zRE*+,SaT UV_`p{abwI~Z~lR\ *+,--SgT4 UV _` no po oabzR|,,2N-*+--d,*+-,Sl n$qT*,UV,_`,p{ #}abwI~Z~^RG*+ S vxTUV_`abRc,N+*- S }T*UV_`o}ab[swI~Rw,:*-!"+ ST4UV_`oeo}ab[swIlR] *+,-ST4 UV _` no po qoabzR],2N*+-,S  T*UV_`p{ }abwI~Z~R%*-#: :*,$W+ ST>%UV%_`%}%p{tIKR ;- :,6* :*%: * &: + S 1Tp ;UV;_`;no;po;qo;v3rs,uv$tI K 1 mf RB ' STUVvR5+>d(d):6d+2!SS ,2T>v5UV5{5v2v tIR4+*=()N6++!:-S-S" &,2T>&v4UV4rs/v"tIR--*,,:*,*-#-:+ S#T>f-UV-_`-}-p{# fR9*STUV R4 *).ST  o R+* +/k YYkkkPb@k7*+012Y*3+45*+67*+89*+:;*+<S" DM]foxTWXf RX=M,+>*,?@S T WX RV$*!*AB*C**d*S"T $|}R8)( 'DYEFS  DPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK #F=1ki i win32ole/win32ole.jarPK F= META-INF/PK F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK F=?B'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 T ? ?  ? ?    ?  ? ?  ? ?  ? ?  $ $ $ $ $   ?  ?  ?  ? ?              ?  ?    ! " #$ #% #& '( )*+ Q ?./EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freestartDop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ab [\0 123 45 678 9: ;< = >? @AB CD E FG HI HJ KLM NOcom/jacob/com/Dispatch aP =Q RS T UV W XY Z ]^ _` [\java/lang/StringBuilder a Time spent: ]^ ]_COUNT: ]` aOb cP de fg h i WX UVjava/lang/Objectj T kl He mn o pq r: st#org/jruby/ext/win32ole/RubyWIN32OLEu vw mn al xy zT {| }O ~    Y {{ S}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses YZorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;java/lang/SystemnanoTime()J safeReleaseoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlngetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!?TUVWX YZ[\]^_`abcR *+,*d$! %e  fg hi jkalc\ *+,*-d(* +e* fg hi jk [\mnc/*d.e fg[oc@ +*d4e fg pqrstuc1+N*::,+- W- d9:>?@)A,Ce> vw1fg1pq1xy,hi#z{rs|}c B- :* :,6*:*:+ dIJKNO+Q8Sef (~wBfgBpqBBB:2V+`8 ~wr sIcm,2N*Y-*dX Z\e*fgpq rsIZcE*+,dae fgpqrsIZ}c\ *+,--dge4 fg pq   rsc|,,2N-*+--d,*+-,dl n$qe*,fg,pq, #rsIZocYI* !(gc!"Y`"p)#$Y%&'!()'"*+,+ dxy {}Qe YfgYpqTrscc,N+*-- d e*fgpqrs[sIc!+:,:*-./ de>!fg!pq!!vhirs[sI}c] *+,-de4 fg pq   rsc],2N*+-,d  e*fgpq rsIZc%*-0: :*,1W+ de>%fg%pq%%VXc ;- :,6* :*2: * 3: + d 1ep ;fg;pq;;;;`3,`$V X 1 ~w cB 4 defg`c5+>d5d6:6d+2.Sd ,2e>`5fg55`2` Vc4+7=56N6+8.:-S-d" &,2e>&`4fg4/`"Vc--*,9:*,*-0::+ d#e>w-fg-pq--# wc9*defg c4 *6;de  c+* +<k YYkkkPb@k7*+=>?Y*@+AB*+CD*+EF*+GH*+Id" DM]foxehiw cXJM,+K*,LMd e hi cV$*!*NO*P**d*d"e $cH 65 4QYRS !"d tu- QPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=vWM M win32ole/win32ole.jarPK F= META-INF/PK F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK F=0~'~')org/jruby/ext/win32ole/RubyWIN32OLE.class1 R = =  = =    =  = =  = =  = =  $ $ $ $  =  =  =  = =             =  =       ! " #$ %&' O =*+EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freestartDop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java _` YZ, -./ 01 234 56 78 9 :; <=> ?@ A BC DE DF GHI JKcom/jacob/com/Dispatch _L =M NO P QR S TU V [\ ]^ WXjava/lang/StringBuilder _ Time spent: YZ Y[ \K] ^L _` ab c d UV STjava/lang/Objecte P fg D` hi j kl m6 no#org/jruby/ext/win32ole/RubyWIN32OLEp qr kl _j st uP vw xK yz {|} ~  U {{ O}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses WXorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;java/lang/SystemnanoTime()J safeReleaseoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlngetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!=RSTUV WXYZ[\]^_`aR *+,*b$! %c  de fg hi_ja\ *+,*-b(* +c* de fg hi YZkla/*b.c deYma@ +*b4c de nopqrsa1+N*::,+- W- b9:>?@)A,Cc> tu1de1no1vw,fg#xypqz{a B- :* :,6*:*:+ bIJKNO+Q8Scf (|uBdeBnoB}~B~B~:2T+^8 |up qIam,2N*Y-*bX Z\c*deno pqIZaE*+,bac denopqIZ{a\ *+,--bgc4 de no }~ ~ ~pqa|,,2N-*+--d,*+-,bl n$qc*,de,no, #pqIZmaNI* !(gc!"Y`"p#$Y%&'!()*+ bxy {}Fc NdeNnoIpqac,N+*-+ b c*deno~pq[sIa!+:,:*-,- bc>!de!no!~!t~fgpq[sI{a] *+,-bc4 de no }~ ~ ~pqa],2N*+-,b  c*deno pqIZa%*-.: :*,/W+ bc>%de%no%%TVa ;- :,6* :*0: * 1: + b 1cp ;de;no;}~;~;~;^3,^$T V 1 |u aB 2 bcde^a5+>d3d4:6d+2,Sb ,2c>^5de55^2^ Ta4+5=34N6+6,:-S-b" &,2c>&^4de4/^"Ta--*,7:*,*-.8:+ b#c>u-de-no--# ua9*bcde a4 *49bc  ~ a+* +:k YYkkkPb@k7*+;<=Y*>+?@*+AB*+CD*+EF*+Gb" DM]foxcfgu aXHM,+I*,JKb c fg aV$*!*LM*N**d*b"c $aH 43 2OYPQ !"b tu) OPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=iry ry win32ole/win32ole.jarPK F= META-INF/PK F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK F=Pl|'|')org/jruby/ext/win32ole/RubyWIN32OLE.class1 S > >  > >    >  > >  > >  > >@  % % % %  >  >  >  > >             >  >       !  "  # $% &'( P >+,EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freestartDop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java `a Z[- ./0 12 345 67 89 : ;< =>? @A B CD EF EG HIJ KLcom/jacob/com/Dispatch `M =N OP Q RS T UV W \] ^_ XYjava/lang/StringBuilder ` Time spent: Z[ Z\ ]L^ _M `a bc d e VW TUjava/lang/Objectf Q gh Ea ij k lm n7 op#org/jruby/ext/win32ole/RubyWIN32OLEq rs lm `k tu vQ wx yL z{ |}~   V {{ P}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses XYorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;java/lang/SystemnanoTime()J safeReleaseoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlngetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!>STUVW XYZ[\]^_`abR *+,*c$! %d  ef gh ij`kb\ *+,*-c(* +d* ef gh ij Z[lmb/*c.d efZnb@ +*c4d ef opqrstb1+N*::,+- W- c9:>?@)A,Cd> uv1ef1op1wx,gh#yzqr{|b B- :* :,6*:*:+ cIJKNO+Q8Sdf (}vBefBopB~BB:2U+_8 }vq rIbm,2N*Y-*cX Z\d*efop qrIZbE*+,cad efopqrIZ|b\ *+,--cgd4 ef op ~  qrb|,,2N-*+--d,*+-,cl n$qd*,ef,op, #qrIZnbGI* !(gc!"#p$%Y&'(!)*++ cxy {}?d GefGopBqrbc,N+*-, c d*efopqr[sIb!+:,:*--. cd>!ef!op!!ughqr[sI|b] *+,-cd4 ef op ~  qrb],2N*+-,c  d*efop qrIZb%*-/: :*,0W+ cd>%ef%op%%UWb ;- :,6* :*1: * 2: + c 1dp ;ef;op;~;;;_3,_$U W 1 }v bB 3 cdef_b5+>d4d5:6d+2-Sc ,2d>_5ef55_2_ Ub4+6=45N6+7-:-S-c" &,2d>&_4ef4/_"Ub--*,8:*,*-/9:+ c#d>v-ef-op--# vb9*cdef b4 *5:cd   b+* +;k YYkkkPb@k7*+<=>Y*?+@A*+BC*+DE*+FG*+Hc" DM]foxdghv bXIM,+J*,KLc d gh bV$*!*MN*O**d*c"d $bH 54 3PYQR !"c tu* PPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=E\&&win32ole/win32ole.jarPK 7F= META-INF/PK 6F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK 7F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK 7F=]ex'x')org/jruby/ext/win32ole/RubyWIN32OLE.class1 R = =  = =    =  = =  = =  = =  $ $ $ $  =  =  =  = =             =  =       ! " #$ %&' O =*+EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freestartDop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java _` YZ, -./ 01 234 56 78 9 :; <=> ?@ A BC DE DF GHI JKcom/jacob/com/Dispatch _L =M NO P QR S TU V [\ ]^ WXjava/lang/StringBuilder _ Time spent: YZ Y[ \K] ^L _` ab c d UV STjava/lang/Objecte P fg D` hi j kl m6 no#org/jruby/ext/win32ole/RubyWIN32OLEp qr kl _j st uP vw xK yz {|} ~  U {{ O}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses WXorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;java/lang/SystemnanoTime()J safeReleaseoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlngetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!=RSTUV WXYZ[\]^_`aR *+,*b$! %c  de fg hi_ja\ *+,*-b(* +c* de fg hi YZkla/*b.c deYma@ +*b4c de nopqrsa1+N*::,+- W- b9:>?@)A,Cc> tu1de1no1vw,fg#xypqz{a B- :* :,6*:*:+ bIJKNO+Q8Scf (|uBdeBnoB}~B~B~:2T+^8 |up qIam,2N*Y-*bX Z\c*deno pqIZaE*+,bac denopqIZ{a\ *+,--bgc4 de no }~ ~ ~pqa|,,2N-*+--d,*+-,bl n$qc*,de,no, #pqIZmaHI* !(gc!"p#$Y%&'!()*+ bxy {}@c HdeHnoCpqac,N+*-+ b c*deno~pq[sIa!+:,:*-,- bc>!de!no!~!t~fgpq[sI{a] *+,-bc4 de no }~ ~ ~pqa],2N*+-,b  c*deno pqIZa%*-.: :*,/W+ bc>%de%no%%TVa ;- :,6* :*0: * 1: + b 1cp ;de;no;}~;~;~;^3,^$T V 1 |u aB 2 bcde^a5+>d3d4:6d+2,Sb ,2c>^5de55^2^ Ta4+5=34N6+6,:-S-b" &,2c>&^4de4/^"Ta--*,7:*,*-.8:+ b#c>u-de-no--# ua9*bcde a4 *49bc  ~ a+* +:k YYkkkPb@k7*+;<=Y*>+?@*+AB*+CD*+EF*+Gb" DM]foxcfgu aXHM,+I*,JKb c fg aV$*!*LM*N**d*b"c $aH 43 2OYPQ !"b tu) OPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK 7F=}win32ole/win32ole.jarPK F= META-INF/PK F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK F=9]%%)org/jruby/ext/win32ole/RubyWIN32OLE.class1g I 2 2  2 2    2  2 2  2 2   2  2  2  2 2    2  2             D 2 2 2EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java VW PQ     ! "# $ %& '() *+ , -. /0 /1 234 56com/jacob/com/Dispatch V7  =8 9: ; <= > ?@ AB C D LM JKjava/lang/ObjectE ; FG /@ HI J KL M! NO#org/jruby/ext/win32ole/RubyWIN32OLEP QR bc Va ST U; VW X6 YZ [\] ^_ `a bc de{{ f:}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses V NO RS TUorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!2IJKLM NOPQRSTUVWXR *+,*Y$! %Z  [\ ]^ _`VaX\ *+,*-Y(* +Z* [\ ]^ _` PQbcX/*Y.Z [\PdX@ +*Y4Z [\ efghijX1+N*::,+- W- Y9:>?@)A,CZ> kl1[\1ef1mn,]^#opghqrX B- :* :,6*:*:+ YIJKNO+Q8SZf (slB[\BefBtuBvuBwu:xy2zK+{U8 slg h|I}~Xm,2N*Y-*YX Z\Z*[\efv gh|IZXE*+,YaZ [\efvgh|IZrX\ *+,--YgZ4 [\ ef tu vu ughX|,,2N-*+--d,*+-,Yl n$qZ*,[\,ef,v #gh|IZdXG*+ Y yZ[\efghXc,N+*- Y Z*[\efugh[s|IX!+:,:*-!" YZ>![\!ef!u!ku]^gh[s|IrX] *+,-YZ4 [\ ef tu vu wughX],2N*+-,Y  Z*[\efv gh|IZX%*-#: :*,$W+ YZ>%[\%ef%%vzKMX ;- :,6* :*%: * &: + Y 1Zp ;[\;ef;tu;vu;wu;U3xy,{U$zK M 1 sl XB ' YZ[\UX5+>d(d):6d+2!SY ,2Z>U5[\55U2U zKX4+*=()N6++!:-S-Y" &,2Z>&U4[\4xy/U"zKX--*,,:*,*-#-:+ Y#Z>l-[\-ef--v# lX9*YZ[\ X4 *).YZ  u X+* +/k YYkkkPb@k7*+012Y*3+45*+67*+89*+:;*+<Y" DM]foxZ]^l XX=M,+>*,?@Y Z ]^ XV$*!*AB*C**d*Y"Z $XH )( 'DYEF GHY tu DPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=Awin32ole/win32ole.jarPK ֆF= META-INF/PK ՆF=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK 3.>ג5b OBmw"VgJqXV*MifD %jHiDm:UL{XBKAuom||ztdw7ԑ7y#%aq@3'M7T/^+3h'Zx[pDƎ:=[ )@f%oPK vF=Y Yx META-INF/JacobVersion.properties5̱ 0=wՔ{j%Щ ..CXoH{: u &` ;f*$#`u4_K3--VӚƱH2I6gH PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK uF=w@Gcom/jacob/com/Dispatch.class՚{`[}GdY6~ɶ4n+/!f  bcp kV%#Nڭ] [&- VVBywJ_k;F_]W~sCMp9:W;}7< 7oŷX|/~>>}*nj/P"y7;}^O/ [P?~x~DS/>FkT_PK//}ju*~CX0QE.%/+2ylҳog=vmgb *3\^NԤg$ f%OUVOU `u2BW>I(zq[)}J:'$fFx,vyJ^ӣkdztm]rYOw mޣl6е3իkό#3k6 g615nz.LЃ LْL+J_N)Ę)^/X2܄bf&\^IlʾvZgрA–A zuP!$2dw2RF]V# ꜖:AfklיEN[.w&`z i$g3{Q@:^ȆN8̵ ?;Fo,81Lş\zT|0BAr㪞ZӍخ^؃C'r[m6Aam/Jn0Al׎+9:`c:9LQJoe^'SL48r~/G;Xm M> a=0xwxnEx}=x5y-T/zC3[Blψ$VvQlŲ @v(Gx(m@ː[ [s^p=jT9!ZYk$xNT>ݪ2b9ȥߋ(C؅WZ]UGNtA֫6vy ʙ(6п1к>Zw1r QH= eXJ ᣰP ܢ\!W#J0WLsF;`~nCT BsQg:Õp%&F]u0ͮ-= FYhma-mmƧH5|j,38YՁV PԅCFGAn4Jb|ʹt.4t2!!Q$p qQ;%]q3~ F"OyQ΋P6G왟A^KNUulUqx)ڡ?M䑹LRmE ]CFcTrAV}=am-}[P <3rp&XUB,$BWg&VkSX^;ejmFD 5͡rhU! ށP-*:n jJ@[H*,\!z:Op=oރ}~?`vA,2}VԳr޶3P/: jNL2u!AKNfQJ emVC\f{׷H }3p֕w ?6ji zJ5qH7m\c ~K$h 3o7 vr\{/i'פQnɋ(ra\5IYL];G )Z܎ZJ<ĝ(qd1#.qHasDB15(fP~]< &,QXģGa85-#WSإD֧˺P#@jH5[i!a!jo7mD.- nE *hFPE L˵؉`1^ FfN[+z}+  fCQ+ JT~**ŧJPi*TsUOqPLԨG7X,D]~\hR ֊cu=IEyQ~*b!C!""!""jZJNqEkH㳤5 nZ,`'BފȽ*EM 6&r@nTKT9#Ə<V{CV. qՅYBpS)\.t : …NZ3="SC1hFqDLI4J(xe FA}hw& a]XF(hRUnu+(&[Q6QP=Uk(&ۑ(1? e &ct& jH`&'K6QPC<(xe ; ߶BEaQ+6QPsaŋ Yk -fIo5.W^(Eno#m%+5J }Hi}3+uRyQoÐ9s[ԋܢ^]G}1<-T8Wzhya6v],m|MI[&? '>8Bn] uMxL)/FHӦtpY䙞>\i~(<=a΁vgPÃ(;gMHiu]a9i]Q+RZ]W+2b ٔcf>Ş~LG6df¬PFz>kcV _[ӫyۤ0α@C]صN" LI2jZh)b.Oүt}d>??I`F?ڏC!qh#hI':_S%PK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK vF= AMETA-INF/PK uF=%#+META-INF/MANIFEST.MFPK vF=Y Yx `META-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A8com/jacob/PK 5`.=A`com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎. com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? >com/jacob/com/ComException.classPK 5`.=L듄,$#com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!n&com/jacob/com/DateUtilities.classPK uF=w@G*com/jacob/com/Dispatch.classPK 5`.=F "N;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &/@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf)LEcom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Jcom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh-Ocom/jacob/com/FuncDesc.classPK 4`.=mgPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Xcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["7^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !dcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^Y\ncom/jacob/com/Pointer.classPK 5`.=(apcom/jacob/com/PointerWeakReference.classPK <1=L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK ֆF=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK ֆF=@Ņ'')org/jruby/ext/win32ole/RubyWIN32OLE.class1 T ? ?  ? ?    ?  ? ?  ? ?  ? ?  $ $; $ $   ?  ?  ?  ? ?              ?  ?      !" !# !$ %& '() Q ?,-EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch; timeSpentJcountI((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freestartDop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGetresulttoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java ab [\. /01 23 456 78 9: ; <= >?@ AB C DE FG FH IJK LMcom/jacob/com/Dispatch aN =O PQ R ST U VW X ]^ _` YZjava/lang/StringBuilder a Time spent: [\ [] ^M_ `N ab cd e f WX UVjava/lang/Objectg R hi Fb jk l mn o8 pq#org/jruby/ext/win32ole/RubyWIN32OLEr st mn al uv wR xy zM {| }~   W {{ Q}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses YZorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String;java/lang/SystemnanoTime()J safeReleaseoutLjava/io/PrintStream;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toStringjava/io/PrintStreamprintlngetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillisnewTime(J)Lorg/jruby/RubyTime; startsWith!?TUVWX YZ[\]^_`abcR *+,*d$! %e  fg hi jkalc\ *+,*-d(* +e* fg hi jk [\mnc/*d.e fg[oc@ +*d4e fg pqrstuc1+N*::,+- W- d9:>?@)A,Ce> vw1fg1pq1xy,hi#z{rs|}c B- :* :,6*:*:+ dIJKNO+Q8Sef (~wBfgBpqBBB:2V+`8 ~wr sIcm,2N*Y-*dX Z\e*fgpq rsIZcE*+,dae fgpqrsIZ}c\ *+,--dge4 fg pq   rsc|,,2N-*+--d,*+-,dl n$qe*,fg,pq, #rsIZocLI* !(gc!"p"#$Y%&'!(m*+,+ dxy {}De LfgLpqGrscc,N+*-- d e*fgpqrs[sIc!+:,:*-./ de>!fg!pq!!vhirs[sI}c] *+,-de4 fg pq   rsc],2N*+-,d  e*fgpq rsIZc%*-0: :*,1W+ de>%fg%pq%%VXc ;- :,6* :*2: * 3: + d 1ep ;fg;pq;;;;`3,`$V X 1 ~w cB 4 defg`c5+>d5d6:6d+2.Sd ,2e>`5fg55`2` Vc4+7=56N6+8.:-S-d" &,2e>&`4fg4/`"Vc--*,9:*,*-0::+ d#e>w-fg-pq--# wc9*defg c4 *6;de  c+* +<k YYkkkPb@k7*+=>?Y*@+AB*+CD*+EF*+GH*+Id" DM]foxehiw cXJM,+K*,LMd e hi cV$*!*NO*P**d*d"e $cH 65 4QYRS !"d tu+ QPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=YEY//win32ole/win32ole.jarPK oF= META-INF/PK nF=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK /Tl6l:fwb0NhNQ^z*ZJItKY{│R6D{YPK <1= v META-INF/JacobVersion.properties5K 0a[S毝V])^@M7-E1z~ӢQSz::%lMuѰRKCyhz}@ΚS+U۬cYc4%PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK 5`.=EFcom/jacob/com/Dispatch.class՚ xu+^7)YKc%1/!f-K6ݑ+Ɇ>H1 iBC,G!! I1ͣIڤI %=ghk-}ٹssg٫^+>kXU:a c]|# !&s% ANE_6վKοw߃!Q~&8AB/2P *~I4گ*TJjQ;d`,|&1ݵgWP@ϖ]z6vm<Ttg3) * UtZ& iZ['mM J 'սʘڭ~5OR*\v$œ j6_L*JfdU!ʌgP۷{vumϠvYߞkDŻzvM;6'cU=6R6^㢡o I.BZ 2I;ks*NQsʞJلL5R.hܐʏ+(*ַ}#z/ɭ3P_PmQ54HsuԸ6 W;2:8Dr }5SH DQz 5/)aXAR*h{zj2o9 Xi%^⮌wq8@T]}_ d/UN}F0t0NŇg4cFվ b]A"xOvѲ,]B.T Rcdpu@L*KQP*3N3rxm1O0 NFx<0 v"{qBܔJOQl}iyK#]N?*k)t5?%znݳSˀ]MJeDAo~w+%ފx1'<m&fU&ވ=_;2"{A8=@ٜiu_Rb+=X'mrĶy΢qE7d·.ܳ0P^pθv N S*/ i~LNU$aaK@ɬ, Iv @!3tZQ]15SٛPM=L-%j>bJZ2t,):6^k cJ>ƕ2!me;cd,_*&p% **ðva7abۭd/|>],uc-baKmjrYo]$@AR[8dTFHk/knY4&0HfF*p qQX;(fBIZVG~a[ /~K7&\PY:HsgqhL㳙ي`6Ǩq|^(~\AԘfKή#e1Xre8Y,Ml&vq`Q(`MjX$ƴ26V^GeV(:KVDd'f:Z4ܰԄ"I,Z":6Op8>`yhq V־VsͿ'BCP԰m&Z!S+djOM2QRNev6#NxĞu80,V>,tBl X֤Q'4+U8~' ܯq-䓠5μ,؍&˕r6V{.4 &I\Bɋ6ķo hxfĤ:pwa=yhϵJ<yXo?G$ӂUJ}B**x(*QAʴp͑Fݫ;v Y)T jR-B@&*i5#~Q4*Dm }EҢr<= kpQ- Xӈ8.cDA)% ù9 >MfT% *QA(u6.Q=Yk(u6O }.Q`{(-mH"a(h J[(C!~? Ӌ9F蜣 DK4+ >ͅЅDAÅ6d3%v5*4^3ŮF(v;GlVN @T"e͌A8ĥnEÏK:۴(#ՌNu"q9|!Ü'jhr2'JS m\MIį Mbp}!j_l^)[QSW8gLFWԈԯvT6 M-EyfRJs5TwUC(z'$,f}Ё9'Ex J>mJQKBZ'IPS(|KOVZ8sKBm#WayJDՉڰX߅s{2Z9ɨ e|Z_GN1!b2j9$E,wsXnDa|뜘H"*+yy>喓$E)Mɩ9'Ec$6KP KO!I-s1)TAjΛJCQn)B>!]Tנ`{"<!K'6,bù r. .ho>j!瞬ڰqw#߉%a-s܁yCF~;~Cw!;DdK"i|vjh?!FY!E4Y#~YlMnb*['(v/#-[r-~Z/h/R,C+b.'ckצ>[yOQ fI~'BG`5A3?t~1~UMkPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK <1= AMETA-INF/PK ;1=/5+META-INF/MANIFEST.MFPK <1= v aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK 5`.=EF*com/jacob/com/Dispatch.classPK 5`.=F ".;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf),Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Icom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh Ocom/jacob/com/FuncDesc.classPK 4`.=mgcPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Wcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !jdcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^YL(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK oF=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK oF=^R%R%)org/jruby/ext/win32ole/RubyWIN32OLE.class1] F 1 1  1 1    1  1 1  1 1   1  1  1  1 1   1 1      C 1  EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java OP MN          ! " #$ %& %' ()* +,com/jacob/com/Dispatch O- y =. /0 1 23 4 56 78 9 : IJ GHjava/lang/Object; 1 <= >? @ AB C DE#org/jruby/ext/win32ole/RubyWIN32OLEF GH [\ OZ IJ K1 LM N, OP QRS TU VW XY Z[{{ \0}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses O KLorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; getString newString*(Ljava/lang/String;)Lorg/jruby/RubyString; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!1FGHIJ KLMNOPQR *+,*R$! %S  TU VW XYOZQ\ *+,*-R(* +S* TU VW XY MN[\Q/*R.S TUM]Q@ +*R4S TU ^_`abcQ1+N*::,+- W- R9:>?@)A,CS> de1TU1^_1fg,VW#hi`ajkQ B- :* :,6*:*:+ RIJKNO+Q8SSf (leBTUB^_BmnBonBpn:qr2sH+tu8 le` avIwxyQm,2N*Y-*RX Z\S*TU^_oz {|`avI}~Z}yQE*+,RaS TU^_oz`avI}~Z}kQ\ *+,--RgS4 TU ^_ mn on n`ayQ|,,2N-*+--d,*+-,Rl n$qS*,TU,^_,oz #|`avI}~Z}]QG*+ R vxSTU^_`aQc,N+*- R }S*TU^_n|`a[svI}Q!+:,:*-!" RS>!TU!^_!n!dnVW|`a[svIkQ] *+,-RS4 TU ^_ mn on pn`ayQ],2N*+-,R  S*TU^_oz |`avI}~Z}Q%*-#: :*,$W+ RS>%TU%^_%|%ozsHJQ ;- :,6* :*%: * &: + R 1Sp ;TU;^_;mn;on;pn;u3qr,tu$sH J 1 le QB ' RSTUuQ5+>d(d):6d+2!SR ,2S>u5TU5z5u2u sHQ4+*=()N6++!:-S-R" &,2S>&u4TU4qr/u"sHQ^+*,*-#, RS*TU^_|ozQ9*RSTU Q4 *)-RS  n Q+* +.k YYkkkPb@k7*+/01Y*2+34*+56*+78*+9:*+;R" DM]foxSVWe QX?R S VW QV$*!*@A*B**d*R"S ${|Q8)( 'CYDER  CPK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK oF=]win32ole/win32ole.jarPK )F= META-INF/PK (F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK /Tl6l:fwb0NhNQ^z*ZJItKY{│R6D{YPK <1= v META-INF/JacobVersion.properties5K 0a[S毝V])^@M7-E1z~ӢQSz::%lMuѰRKCyhz}@ΚS+U۬cYc4%PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK 5`.=EFcom/jacob/com/Dispatch.class՚ xu+^7)YKc%1/!f-K6ݑ+Ɇ>H1 iBC,G!! I1ͣIڤI %=ghk-}ٹssg٫^+>kXU:a c]|# !&s% ANE_6վKοw߃!Q~&8AB/2P *~I4گ*TJjQ;d`,|&1ݵgWP@ϖ]z6vm<Ttg3) * UtZ& iZ['mM J 'սʘڭ~5OR*\v$œ j6_L*JfdU!ʌgP۷{vumϠvYߞkDŻzvM;6'cU=6R6^㢡o I.BZ 2I;ks*NQsʞJلL5R.hܐʏ+(*ַ}#z/ɭ3P_PmQ54HsuԸ6 W;2:8Dr }5SH DQz 5/)aXAR*h{zj2o9 Xi%^⮌wq8@T]}_ d/UN}F0t0NŇg4cFվ b]A"xOvѲ,]B.T Rcdpu@L*KQP*3N3rxm1O0 NFx<0 v"{qBܔJOQl}iyK#]N?*k)t5?%znݳSˀ]MJeDAo~w+%ފx1'<m&fU&ވ=_;2"{A8=@ٜiu_Rb+=X'mrĶy΢qE7d·.ܳ0P^pθv N S*/ i~LNU$aaK@ɬ, Iv @!3tZQ]15SٛPM=L-%j>bJZ2t,):6^k cJ>ƕ2!me;cd,_*&p% **ðva7abۭd/|>],uc-baKmjrYo]$@AR[8dTFHk/knY4&0HfF*p qQX;(fBIZVG~a[ /~K7&\PY:HsgqhL㳙ي`6Ǩq|^(~\AԘfKή#e1Xre8Y,Ml&vq`Q(`MjX$ƴ26V^GeV(:KVDd'f:Z4ܰԄ"I,Z":6Op8>`yhq V־VsͿ'BCP԰m&Z!S+djOM2QRNev6#NxĞu80,V>,tBl X֤Q'4+U8~' ܯq-䓠5μ,؍&˕r6V{.4 &I\Bɋ6ķo hxfĤ:pwa=yhϵJ<yXo?G$ӂUJ}B**x(*QAʴp͑Fݫ;v Y)T jR-B@&*i5#~Q4*Dm }EҢr<= kpQ- Xӈ8.cDA)% ù9 >MfT% *QA(u6.Q=Yk(u6O }.Q`{(-mH"a(h J[(C!~? Ӌ9F蜣 DK4+ >ͅЅDAÅ6d3%v5*4^3ŮF(v;GlVN @T"e͌A8ĥnEÏK:۴(#ՌNu"q9|!Ü'jhr2'JS m\MIį Mbp}!j_l^)[QSW8gLFWԈԯvT6 M-EyfRJs5TwUC(z'$,f}Ё9'Ex J>mJQKBZ'IPS(|KOVZ8sKBm#WayJDՉڰX߅s{2Z9ɨ e|Z_GN1!b2j9$E,wsXnDa|뜘H"*+yy>喓$E)Mɩ9'Ec$6KP KO!I-s1)TAjΛJCQn)B>!]Tנ`{"<!K'6,bù r. .ho>j!瞬ڰqw#߉%a-s܁yCF~;~Cw!;DdK"i|vjh?!FY!E4Y#~YlMnb*['(v/#-[r-~Z/h/R,C+b.'ckצ>[yOQ fI~'BG`5A3?t~1~UMkPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK <1= AMETA-INF/PK ;1=/5+META-INF/MANIFEST.MFPK <1= v aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK 5`.=EF*com/jacob/com/Dispatch.classPK 5`.=F ".;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf),Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Icom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh Ocom/jacob/com/FuncDesc.classPK 4`.=mgcPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Wcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !jdcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^YL(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK )F=N\+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK )F=wpM$$)org/jruby/ext/win32ole/RubyWIN32OLE.class1V D 1 1  1 1    1  1 1  1 1   1  1  1  1 1   1 1   A 1EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java MN KL               !" !# $%& '(com/jacob/com/Dispatch M) w =* +, - ./ 0 12 34 }5 }6 GH EFjava/lang/Object7 - 89 :; < => ? @A#org/jruby/ext/win32ole/RubyWIN32OLEB CD YZ MX EF G- HI JKL MN OP QR ST{{ U,}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses M IJorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date;getInt newFixnum(I)Lorg/jruby/RubyFixnum; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!1DEFGH IJKLMNOR *+,*P$! %Q  RS TU VWMXO\ *+,*-P(* +Q* RS TU VW KLYZO/*P.Q RSK[O@ +*P4Q RS \]^_`aO1+N*::,+- W- P9:>?@)A,CQ> bc1RS1\]1de,TU#fg^_hiO B- :* :,6*:*:+ PIJKNO+Q8SQf (jcBRSB\]BklBmlBnl:op2qF+rs8 jc^ _tIuvwOm,2N*Y-*PX Z\Q*RS\]mx yz^_tI{|Z{}wOE*+,PaQ RS\]mx^_tI{|Z{~iO\ *+,--PgQ4 RS \] kl ml l^_wO|,,2N-*+--d,*+-,Pl n$qQ*,RS,\],mx #z^_tI{|Z{[OG*+ P vxQRS\]^_Oc,N+*- P }Q*RS\]lz^_[stI{O!+:,:*-!" PQ>!RS!\]!l!blTUz^_[stIiO] *+,-PQ4 RS \] kl ml nl^_wO],2N*+-,P  Q*RS\]mx z^_tI{|Z{O%*-#: :*,$W+ PQ>%RS%\]%z%mxqFHO ;- :,6* :*%: * &: + P 1Qp ;RS;\];kl;ml;nl;s3op,rs$qF H 1 jc OB ' PQRSsO5+>d(d):6d+2!SP ,2Q>s5RS5x5s2s qFO4+*=()N6++!:-S-P" &,2Q>&s4RS4op/s"qFO^+*,*-#, PQ*RS\]zmxO9*PQRS O4 *)-PQ  l Ox+* +.b YYbbbPb@b7*+/01Y*2+34*+56*+78*+9P DM]foQxTUxc OX:M,+;*,<=P Q TU OV$*!*>?*@**d*P"Q $yzO8)( 'AYBCP  APK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK )F=k<win32ole/win32ole.jarPK F= META-INF/PK F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK /Tl6l:fwb0NhNQ^z*ZJItKY{│R6D{YPK <1= v META-INF/JacobVersion.properties5K 0a[S毝V])^@M7-E1z~ӢQSz::%lMuѰRKCyhz}@ΚS+U۬cYc4%PK 4`.=com/PK 5`.= com/jacob/PK 5`.=com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classŗ xW7d7ːCIhʣ hd3β@BmRh>k-VRj7)(}HbwhjkkZϙL63F~ssϹN0wa7xaG'8,qgX>>c7pY|Ń7w n}C, z† AG| V"CL[ڢj>Kac`A jQ99~TCRQWUtk)4t)ӰI~Y[K Nk*lY*GȭQ>4_rOӷБ5j]H6#[gAjYIw6h^'Nb?Mj )bkw~Z6 hEA{ ^2ډD"xBvev VcAݿdT%D$O4^ Ll]3t9# bsLđcdC-kv]6 _UNZ E7=Hq34n5jWį, .?`t8L%<\y:GgT>[.7ZW7q)QH>~ w?as}(]r+ ;aO X.gx^ dگk o)QGw,~EHtܕyVM^R*6/w JWIi[d'7,/HϦXdq,w5`: ?/:t'F^UwLް.=C53йXijۦݱ/m5iRzj܍R ]ZWTzj8{:_'ZJտ(^S[eRDj ju,lM ^~+'_Dnn 7TP+W"w̋|0?w5u*l$p,̖cwpI%mhW7 pU ԚLm:H.^V0Rp5Ii4j t-ԢZQO f-c$ꉵāˈ&VФ4+(`0)e'ڛ) 4Uyަ \{X^CqL\!{93ȠoD I1EfImYM69@n'IEP1a@TsbMm6YXEQc'gjzEۄHqck!X74!z{>FɋCݝ꿠U`_ݗFI\Rh-fSV6GAcAn"! 1$fMle , aDԹ!P} >7JFjTW/ ۝jd,tWbtb H̬!56`R۞U¾vj`WegPcbH#qB4&=ޠoh ]c$P#؆Ct_r8 ءSN?TxJg(cNoE5q*'nw͌a4$&e O˹w UV)$ Do!S)r}YL0I-:1^R/{1,8ޢb(G:H6ye{h@_wKSnhyi chQg!U̦ĸ >1SDs1WTcQy>iXWD˅[*P bX'QJ׉sB֒n%!BtAlw]t.NxJRkڅOa7KNbH1ΧH3FQ4pC#v817 4-G'R䯴G[1k{πX|n=F/ӵMϤpFMJ|#RUδtD4[7-噖LKy%n}Z.͆´Z`Z-0V ܺZiٍ[ Nىu8^떎lxnؐtw^Ƈl&AV H, 5U 2Y&:_?jMOȵ>Ŗu[Z5:n`rú`Y-FgKsi:aqc2=&c&,nʹ\L^z1'e)9|5K֋w'o)4ɴ%$ӖdڒB,f}Ph v# ;74aa?j.~vx(Zi#(PX2e*;5#wPK 5`.=D,-com/jacob/activeX/ActiveXDispatchEvents.classmOPw֭ >'\".hbW.ݝ]˔oo$2ۖfCl{Ͻso?pU:հc@ \Ut\gKM=Lԕu_SZFgztN-({g(6ßtkv3t-6=Ѧ&g(0LK!Q'CH0ệwcs[%];pcx Y1@0u l)PPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classWs֖ky؀BBmBy`;81 ㄒZ,*۔ yj6ux, nEL8RLɘ(!\/ńBWQD(`J2q" OxFB9 ^bNxI) ;MtPo MCe$QG i=;;W!7c$t \Q=mviל4-$׹mu4)Q}RxwuLko'1YnO"r m[t,cozޘw~Gi3n{ 7cIXq#Y*uQwe^wNp?ʻ@? [.:;}Tȋ#Pg{Nәw~&22R 4[׼'fq=s6FW @nae~49$@Ww 쭂(ablК>c {KX%)WOO^1I^K+2`f1?Ԝ`1H+ x[ڃnSq/+/ʴAk̘"U rzd6׬I`.5 )Yu]t.Sԉ5`0*NcW xm5[%Y(JZiœ_йn|1'8 ɸaV%-#3wf;32JЮejk֎DA;fM4qi>s婆LZ~xKŪЯ[]-m[ wxhtC|Ĥ |3?bҳߛkF'X2s٬̗pOw Kkj}#0JWP}X\3kMe'(|SGr =i֘e,U[)=BEj,?kH^x1tV5ҋ`|`BDIdnp,?rP.Ox;U Tz,7k삔3#,}.3O:cl ",f[f$",r,gMcs.%XX̠<)Y ԷƔb  1P9KgTP"\@",}egҲ|z+`%]IDU%wX]*1]7$ˢ?f?c[E_lp=^G`C#ЊXAlnO`SÔ C؇G(3dpy^ӜNGp9> 6A—x p-G8plBVa7w0`'v >>(lOqeKNRs^/Q[ҠB1ǽm.]ģ b='>?z 2.a=K.ӧIK92/#%24_p '{e;BΣ-$Jh|OD8ER'BRocDϒ)/ϡZHve&ƯǓD /2шPs5dBH8[tF0^=$W"D%$]*buEnW'e ^n*08*b0 O4{zmd6fp} $&7 ks5پ;K$CZm@ pzwxyD?OO\ILKʝ&1}re *=R (sU(3e( RrʡdqSb>29?PK 5`.=com/jacob/com/PK 5`.=m_com/jacob/com/Automation.classuOJ@}ӤM=7oZz.uC,O?gc 73oߛ|}|$A481!6q B0 hBZ߷JȒIn(ע1~ޑ{4τ\*+2Ml%0,ج^tn$bEd5g;1{mKk/B 'eYhp_OW?u1cԑG 4npة~PK 5`.=_5? com/jacob/com/ComException.classR]OAn[ *g|&D1Q}#˲K].ȋOA(㹳ʒM=3{9??]cPJ4DeFhy*R͎ Q4nݣP׼+hgڕ7*a+npq_^X.i.vG8h︝M{' ew<^M-lz]Aź+{TGz5Tc_R'.0wݮdrRI&K҈U<'i*VL.IKyYqD w1I:kt.*IMEhS$}A:\-[=ҬaRW+61koA XJS\ 4#]_M|A kò͚֤L`r h5j)~$(?ELeY嬪VlqN\kRtW%~g?HSr0] ͙oo$*?%6LT?'6ߒUPK 5`.=L듄,$com/jacob/com/ComFailException.classoPƿ -9es M`S$t @ζ-H|wc?d6}(1$==={ʏ?_xCk˲Dzrp ځc#;{g>.|/,/YV~? 9umك|loK;?!EtzNJ4sBZ'9#q_Mӈ``aL?>Yma8޴Ck*V f= &DZ9EDY$?NG^O \q%]1p,,e*K.P+Kԡ_*\Ngr0PI7(ӥ\B"k2ؤh+5\dTe"O?@kUeamjz(a,i ءjƖBe a%YSbGĕ)YO:*M2EoVM\@n;JI]Beүצ~Fg`73s^FȈU\Kujk 5kHK#.J,P_K[PK 5`.=ѰTrcom/jacob/com/ComThread.class}TkSU~&-TPK)m54%-v,ͦN;_Й@;C3L?'K as^ϋW&0u& LnX#17b6> ,!1o&Lz ?58șXcѺ l/Z-@bu*ruUZ!Rgs |0C+7++L-vTͧ\W DlQغ@x-Z۱Vy˩|$Jʳaۮ s۞HSx_4prs% d[ˇ %U Anr j05G$7wY6V*t*.تd?f6ach̹B)hB EkQ.OF+P{U+$lv(?6`Khjxz^OVOzuj]i[uQ&sTYW;! J;8Lu@_!YD .1-թh[[-0t$c==ʸJϽD%(=S1p~ c"bft)IGJt2Ѩ 9F~<5 бvSY;g'[$,A"$?5I_L\- 7?%S; wĊpFˊӗGk"O!{N{t,;!Bpu_&d5vb0=!irvrd1s ~()1F9ǎW|jFH!&eK-aߣl)Qř:::jm[ZQH<t4hl#(Iйu."yuh $"AʁZ,z7ߢjj'5!z5/z#jkip-S Z ֧-lZMɛPK 5`.=\_V!com/jacob/com/DateUtilities.class}TMsG}cXɎ L|!eŅbkVrˉK."خPS_OʛdC?'KEm|a\b -|Cd9VowWK3\1;kYpD}eɼU~9L|WZJ`vPl#Owe}j##pEʦFŬVi?:zQD6 6"$p\o'e@(K@, _(5" Ī 4øɐ@}I*lʸI!J Ibz&[{*Qgy UZ1N{zԍ=uOjLVG0!Shƒeܰq-c5+FtȰUjɠm{jKQ(007#iId;Xmgq X7ӽ ߾ C-kaGc!&Jw_c ԏ6y7j۩-I κ^;j4ũ{)>yv07C*@rJ'19sG8_Ez]dv`vԇHL&H1~" #[vaZ O?Evơg:i$.3lqi__',8k%LW9, [q1R"c 4>I}KoC|bo^ w<ѿf1$d'kz y&y³SRDUx1j|LdA"ǫ{%p'A )&hi=o*9K'9T*p!9PK 5`.=EFcom/jacob/com/Dispatch.class՚ xu+^7)YKc%1/!f-K6ݑ+Ɇ>H1 iBC,G!! I1ͣIڤI %=ghk-}ٹssg٫^+>kXU:a c]|# !&s% ANE_6վKοw߃!Q~&8AB/2P *~I4گ*TJjQ;d`,|&1ݵgWP@ϖ]z6vm<Ttg3) * UtZ& iZ['mM J 'սʘڭ~5OR*\v$œ j6_L*JfdU!ʌgP۷{vumϠvYߞkDŻzvM;6'cU=6R6^㢡o I.BZ 2I;ks*NQsʞJلL5R.hܐʏ+(*ַ}#z/ɭ3P_PmQ54HsuԸ6 W;2:8Dr }5SH DQz 5/)aXAR*h{zj2o9 Xi%^⮌wq8@T]}_ d/UN}F0t0NŇg4cFվ b]A"xOvѲ,]B.T Rcdpu@L*KQP*3N3rxm1O0 NFx<0 v"{qBܔJOQl}iyK#]N?*k)t5?%znݳSˀ]MJeDAo~w+%ފx1'<m&fU&ވ=_;2"{A8=@ٜiu_Rb+=X'mrĶy΢qE7d·.ܳ0P^pθv N S*/ i~LNU$aaK@ɬ, Iv @!3tZQ]15SٛPM=L-%j>bJZ2t,):6^k cJ>ƕ2!me;cd,_*&p% **ðva7abۭd/|>],uc-baKmjrYo]$@AR[8dTFHk/knY4&0HfF*p qQX;(fBIZVG~a[ /~K7&\PY:HsgqhL㳙ي`6Ǩq|^(~\AԘfKή#e1Xre8Y,Ml&vq`Q(`MjX$ƴ26V^GeV(:KVDd'f:Z4ܰԄ"I,Z":6Op8>`yhq V־VsͿ'BCP԰m&Z!S+djOM2QRNev6#NxĞu80,V>,tBl X֤Q'4+U8~' ܯq-䓠5μ,؍&˕r6V{.4 &I\Bɋ6ķo hxfĤ:pwa=yhϵJ<yXo?G$ӂUJ}B**x(*QAʴp͑Fݫ;v Y)T jR-B@&*i5#~Q4*Dm }EҢr<= kpQ- Xӈ8.cDA)% ù9 >MfT% *QA(u6.Q=Yk(u6O }.Q`{(-mH"a(h J[(C!~? Ӌ9F蜣 DK4+ >ͅЅDAÅ6d3%v5*4^3ŮF(v;GlVN @T"e͌A8ĥnEÏK:۴(#ՌNu"q9|!Ü'jhr2'JS m\MIį Mbp}!j_l^)[QSW8gLFWԈԯvT6 M-EyfRJs5TwUC(z'$,f}Ё9'Ex J>mJQKBZ'IPS(|KOVZ8sKBm#WayJDՉڰX߅s{2Z9ɨ e|Z_GN1!b2j9$E,wsXnDa|뜘H"*+yy>喓$E)Mɩ9'Ec$6KP KO!I-s1)TAjΛJCQn)B>!]Tנ`{"<!K'6,bù r. .ho>j!瞬ڰqw#߉%a-s܁yCF~;~Cw!;DdK"i|vjh?!FY!E4Y#~YlMnb*['(v/#-[r-~Z/h/R,C+b.'ckצ>[yOQ fI~'BG`5A3?t~1~UMkPK 5`.=F "com/jacob/com/DispatchEvents.classVmSU~.$l,{%[BB-V T$KX tqF3~Ff|3(ܛ4p{sssι?' ˄LIҴ2$Lϛ|yÇȸY slA-X@K~%oapm 2aRFw;ޕCS6nnY)-sζwz)+PSV2ƥ QSShbCRcjfb -^\bLZi!MV>;jҠ`\KҦ] Lסp+o5yZP ~,&Y#ؿ艝͌ȱ.g[x8~?٣䴄$&\59ƪܪZO(?ֿm+0L^ ;ca$ uM Mu jN< hN4W=8Kq+(H}4ZGrz jG>w$YZezŚsZy!]DDЏ(is܁" wk*W2̥KQ`TtGm=އu  h(1+|%!&#{N 6 x`>ZH z]}ty]A۔ ŻCDLJGǘ'DͧXgt}N'_9-s[`^ CCnx"7^ C%( ;f?ЕU.IL4/0_Q*_?Q@9^phb/FjX DѕSr*T&`LTuvG ¹R)9,lX+m_PK 5`.=hu{4 &com/jacob/com/DispatchIdentifier.classWwG 4S ِax"!R, c$bˤ{^krN |T2X\Isߝwf̮yǟc{'}>asv&ޘg=θ2RL~jy?33NbcA"sA욮뉬𒴌^lE=*d#2|U|/ĊP٪-]]WXjt}#9#q6 k "sKQsU~^釶W,ii\u$qJE١M[O.ÍB]FNq\xlBd{ICPv]7Sx [FtTS!aF5rU=F;'5M=8c֮6@Yj{>HBo}?jȱK8VПMQ75#Y]H("t-ױdWrL?M k~G΂6c"g)ot2׺.‰ڂZ:P˖xϨBOU>a>l}[፪jraiEMYlc˸k<#*z2ꇶfo:]2\1'92F#Q}7j'8hIdsb틐GhTX"հ׎ruرI9x-hh ÜmAVʈʔCmq#F⪛=ٶJIa=ϱԌITqha޳w_fgZ<v⼅P0~1FD:qN rX\b;2uY"+T.zNjq~| ~ROe%zz4P8!1 )b6-&("v{`8 {> 'p8 &g'~~,q'.Eyq $~"+%GiJ< _&~~q 'ᧈ!~~yᗈ__!~~u||^|r|vU݋OC^o*S_e~PK 5`.={'Uf)com/jacob/com/DispatchNullProgramId.classS[OA-ݥ,\AŘhф ٝE>M`zۇ9|ߙ9b;bȔú`@y#O;vǙQ2fXp79z+W~q0D8ms4 M"4 B{'{5۾7h)o 0Ve|?mՃ@CLT/CKwݔm>,3 &0ӯ[ߜ9xq)JUMǁhQin%_Aj=BQAM~+R<g\<<  Pa-YqlH ~GLچ7J\VJQ9}RGJcPE"BG!fByox+T`68lrxʡ-;c%#d÷3@\EÈzk tO8( 0xӹ?n3_腱:jr*1$<+yx) @|F:U$1Pß~ .9v|l6ovypx~-I@DO'J_#_:]QqQP? ,98 G̡`UB 6g-;I"hg,P\U+7=མZ tka{hiB:i>oMBT*M v" b/A`龅GN/z_P=d7mȆ>![s\r.0OnWrN`{3Dˣj\̥>a.Hֳ*~%t/ !-v@(!P`(`@()60Z)!Q@>NP/AZ8'<&A'Q4Di;'$T $rAC%ϐ/tFhi0MxJ'a4L|> 6#|6a6n'~B>Ew,Jsf@-QSMe{6x% % ?ARs{JuAK9j6- }TNPK 5`.=VӴhcom/jacob/com/FuncDesc.classmJ@ϤIj(rvaF .'ӡNOFP>%L+9sg]:`ƾ+Z1%Bd0gyLU HY=$4*b^E~THyrQ&A¦r#FkYt9 t˦2TmTЯF ;+[-YwTŐ{Vp?*0 `!Jڦb`Zf9.B-1mRC.h8VKY&w5}:_"{KZ$cįŴV b*Jtvz(PK 5`.=qK .com/jacob/com/InvocationProxyAllVariants.classVKpU=/LO $ 40I#G!!tNz.XJ. VYRt#U]Yer*D1/ʼs={{?=;0qq1 *F.0$!,ax%Z(x%WÈjp-MB NQ=Q)P0&L*0CH`Ia~!dPz;e( (5 )]۰\:;ZLU!1w~7;i[&h.k`װ~Ǿ1jr=FW')ЦSZ\ǰƎ,Ҕ;ְ¼E9j++KLI 3=;n6a}$_#Vbz2I=#mh%}b̮"LicҺv,K&lԼ y=GWK w$b\a4V @M:?¾ l\Q`ԲԼ7EDŀ%'{RLb/]f5SY`zLӗn 9'w2m (fHxN 3;E⪣'ucJORMiP w漢[wge鴑͒GQ"-yLQDw,AΌWZV]8Eg,.)*}el ,17-lZC'RNʙ7ʻd{6yCĘϨL*YB4nUtehY}V _7 f ݠsuR3i$ sGna2Lx=y 1ٸ a}.~^.~ɚi2\kd;Dn%=;Wx+hny[aT^y~\&HD %1E+/4@U/P8P%Q*/bN-{-ѰEtt#3«ТԱzȿy2mW {>x+omЛ܍&hf/X-pSNƯQP)G]sP C=ÚxYCTGd.>[_= zֳ|uѲoQ=\Z9l#h@X;\K9|Es4>6i`$JѠYRGץ9lX<זy:U[}^bۢyhAlDEjí_+sd/jokN|͕zє,~*l(!qg%qY|s}~|;= g4Y\#\o?ߑzLѸ!6cLq/[WtbJ+&=M1H}}A2 P{Po#݃xNw-S.r B -8$p |9ڇuOШ] S`V'u'S*gSHQ94RX`Xo) X|=bQS\#AFYI:(V˳GDBSbn`Z71O*=!\g&9oA!4uʣ@ Ű PK 5`.=倥v$com/jacob/com/JacobReleaseInfo.classUmSU~,oZ@Iڪ6Pӆ+l.t鲛nU} ̨ߜ?x&Rܗy99w bs2sZ=d̫bA}_*ȩy"EKb,c AbR*79syڵ)iW0lR1dn9\e`6<|xl.zggr+f咱 wa%\nd3MLR`g5Ew γĊ_7&HX  *w}nNi_ST B4,[ˣ|HU?Q4\6=gíd~#at9ƣb "_7CE m5h?jHțB].skў^ /޳zIx1Fc Da[Bh!a$O :uv>( 7ԴHϛH2ua:?[)w櫾Rb2('z| [gLMem :OƤ{*t[=9c>1Ai>uB5Kh%I35:' !4|)i6q,t\lctl!p*:á*_]aLNUѿg2[Eߟpd= Vy &*.*ޯbqQ"YBaFp4I"g.͓g1F.₟l60J\#)z\'_'v+2nʸCGnEM_c0~2q\x93 a$+3ILa)Ìi a܋g% F58)S*|:oے;*{apxxDţ*SCK OG*ΨxJ.Vc9D3b=(N'N˰:GLʞ^κV,95?SvwA]Ƈ ߵsgPwI)w@eT $iFU,eC9jLXI֨I}rSYmғ)>+\1] @Mg=n[=v/(HčYOgTY4k[ztgI31LM-kSUvYI];{R׻Dʥ!#{/R~fB5| yFv}JL9)89<H45W閆pL Ƶs ļMZVTM~_kx׵*zr)R4AÛ- !'5κf:*k7"K ѹ±5. J{G1aQ+x:\Ԑ9]m^Qhph"K];5'#ܚt?z2)pIJ,`9h=Pf9]sX%-ev`J,KOaif$ FrJXIO_l[KZ"s9mkSWOFOM{jƝoiӖmXasna{m+IౠL2c[+TJ. g̸[z+CM8k";ˌYӦBIŮxߖ*w3su!iN䦮 òl^ _UQԱR+tĴL#kؓU m53Yvw[/7eyoΰd]'23:IIsnxr?'P ]PE:h~wѾ/훨G˝R:9 Z/B\X!3`ʹB %]D0V"6Q-nU">C@M/՞4>Ñ"#>X4 [Qj}G^`` s/*Xq+W(ÂÛo+B8:U"B}X?puKC }j' Nz g_W>0kGخk (zx:H$%׳Peɿ^rv,{;Ü x=ge ^Pnzs-:6Zv\;<4ֶ޹='OTD0fWF?yAo/)2*'7^Kj*|[8 ϣ{PK 5`.=`:com/jacob/com/MainSTA.classm PDg5 bcclAhĀW4bY ~%nb]v3 `"&j&c*C`Gj urh+|qډH>Z|B9 _yNz 7`mTRi;磣 tBoCOxjs2;G&.J72^RPK 5`.=6T3+com/jacob/com/NotImplementedException.classP=KA}gbb4Bx`I $i7%n w AK K+8w "̼y;aa P'Tb) e+ϻ'Jmc+`.soOBXie[ڮ7 )=i ٶKBSZHFgb0SAx"BńН ߌ톳@R[9>yMX~1uyˎJ6:LE,!l+~-dcqA%A\i1?ݦ;ENQRTJUM5PK ]/=s-^Ycom/jacob/com/Pointer.classmn0?7i]-hZ4)RA^pfxK)ugpnND"9?~x%}xk=dMc+>`p;QwHt,VRd$|r<Ly)2q: xBK"{\'9YPOHt̩~Qr=9%rVdD.$4bq,?(O|vg<2[hhaÓFy{0l^Z&82tu:qسCDSmˈNԹJ/͛;abO&7a^` sL4;@~ UWQ5 VHְN z%lc;]7\@A6-4(%t t%d6V~\ω5Z5hUTf?I{N%0ۯs^uPK 5`.=(com/jacob/com/PointerWeakReference.classRN@=+HVQDAM411_LLLwyKL$>~qoK9{t_^`^G&YLj0-]z"_ UYW5$ ۵[o{z7nTt{fT3F>MŊ@x;%xviݨ,$J%mwís) ɋʠWHOJYݪ@SMrʼ~}mmej  4D5HbL`&_m}ˮ> {OC`#២:`8G|}Dס `QI r4۹q0FXPT S*!;bc@lLPK <1=r3B3=Oa^NO¬merQ"yJ1tX*)D|2[Xz֦֟6AœEbV.c=F7\mۊ;PK <1=acom/jacob/com/ROT$2.classRMO@}WK%q( j46)-h?e-&6ٙ{33|} ),Xò$V 1JRɠ/l]1$*^K0Lդ]S t yw/LcC+.!s5ǻ񚶎.{EbRqCoj]~mB_(G"He[ 4TzneJ!>kv| lt|[EK-KYu/q,LNFS=Rj g`dV-,fnj&=}6vi)'NiHn=QE6 OO膈~X|C!79D!ɍ4pMa> X%t,b'ۚ_PK <1= com/jacob/com/ROT.classWxS$=`4 $)ePY~²a0IJѦ;IgH6JWtmH^ [k?8sϸO>)Y؊W؆bu"Fm:pBbwb: w  o.[V1ܭnTqJM]h~{qR}xؾKl-V{UO/O ćÇ5|D38aHð򶄊s:jpBC:֊yTǕOuk Okj`8GU|QbM[,1̚tF,k`YȌ#\ul;hzv*&3̳ٔ:9bj9`}ma+b|V4mߡ`~sNx(@iT7tzZ:;hKukgGˡ] :ȃJ= =pM}q+nMv3 uzҲ4P"fwj }+Z:oŒVw,#VSx>.#`6/X$SArGDAdfL_ho0{Rh(XZ:%"FH4g"u^ ;bt6"`I39tf;&y7%s^Y UT9[6i;ɇ/+yfghd͚5 .+-7:_0U@P'p"_0}sՌC~PݎG|΀`N7 |Oֻ-XV7y | _W ķq=Yv@#VG=xC1?Ox~P Tp.'?>=%lWs0KL? _UmJOCth 롬'b ső_7?dؒ l (f4jюUCxj2f`ޔt>vF3O<Î٪Ycpu<U4pDd'^9\:( M9qs=foV04$3'nu;B5Won[!nJYRBDjt98nIƙd6t*^*–g [f^wl$@ } f]!9e~ jR\|>@cs~0N1nǼ19rF,SWӍӾ3LRs8NrhqW.'`4f3EkDD$S= 3II$"pj6UgB o`>=@Ueqia+$6mfuFcxZIa%_ac-͎71#^۔Oa=4uZ_*jtwpNReX"9Y[[Rskj{ '5_HH̦sp,//+H2 ^%S®!8L3AօKS&"lu+Gun5Zctw #-s\~`Gp1O/4"PTyjeY@8F# RDx4Ҡ}<]t:Qᄇ2D@!|*&h(t`1CX!?i(]pā!,w܇!*| #x7] J`f {9 *BXJrq(ЖO"Y;&̑n,FP0sQ9> FG/)aӰHPs9NzةlIR\@]?u*n|Q_&Kpvq^L*/bQ@UEyTrSdXxR6v;i]Fi*&kA4]#tJ=2+iF'/raJhEpP#nشWo%¨0]~:gq6gZtxkQ#2<5hfz؋\ʓ_?_I,l``Ӣ[nK$ir[,l0u4 Ii<8j~ .jaȓrPwlkF<ꄼ%"y-w ,Ztt[U2NU;@rT@ dH]%*Z !k븡H ǘ8@xo0h_iZNv&Llşb0X4Xj-JiߓfuP&KI )dI\Rc@KVFT:"{Q+5{ <6W|-:ȼY PK 4`.=f? com/jacob/com/SafeArray.class}V |Wol6 BVHK5RɆCS6 , lHv*jIkQUiՠj]^xU]K̼73wGy8VCgA,_ Oÿx7 xʏNt'Y XHhpV [>4˖V[Dl`[2{̕cÙBjx$ͽtjtcoڥ٢t~c$w,ښYS(&WI$~kv,X HBtf43Fd D7 Hbzt8?B!v:FSmR!۶ͬ"4)ihΊ,j;BR*c}j\7MsS9}#t8M[ |~4yCzQM2ey+mOYޝeM7kXͧJeE!V$r7V~ B mA5s#COZ6, ]H3SABn˔L^ B5-6EР~Vf2IP -b-&Z 0n%v+Ƙ8nR&7eFϤJ1/C;;n‹:njtdžPSS Y;{գe封CqO+̩tgVhN`nExOzOX8{ĬVsUuE"zNro1I^K>6qm]9 lY[u[Y̹eܝ 3ik|ٮ)2qJ`R!h#:II]E؈0LEcs̵j"BCv2 + 1#0dR[,WfNqTq|8z:EQts&tI'2ܞG퓒b +қ?ܴm0w^J3h[9be639;d7/ DX񼱐:n})?mc1P)_:a/j,K׊'=B|XJ'@R k'ie3;=!`5~x'{~9B%'V@6 *):ę6mmd~ij\0 n/g!ނ!| _X^vN ̶k, Ȇ=<܎;hDjNuMdGd !+hѱ Ucm N,}2&!#S #JwKga/4.{y(vrĹl$,>WϥuMjpABM_a1CWl )ţP s- |SQ|Kw=I9&M$:BV{?vӬn5 N{Q7 5N~79ӻ؏q(inϚYa sTSF{:4}!ndԞBjtQ eX[y=aog #J=-FmExҢIsO{ s{-v:4W`yvv/.#mff_$gop=!~)Sf>jFNqy(_4-~ڏX%C|W$& oI|G{? $AC=S f HKcB-[d0Ԡh26U6z,%HKe}:5Pd2i&Ҫah6PMKK.hBSkل$%)w0V6ȁbi=ur!;?93ݑug$XӋCؔ0c'G켕hfj(v±,^c{&3Q3A3Shv6m n GYu un-GUq^KۏU t6n= PFPu*dVgۇ a&F缑%*\z Ј1{vOD[&6<5ǩ3sD$ @zWt5#)ѵ=rwz:s'RQ>Ŋ,Ak.s"l>hn#,JvC 9 L:b]u]kmkB/ -q_h8hfj ._XG(,n y5\:, &y+x&` 6#h*9.⮆ e;3v4iѬqI{ؿ/=;TZeJ%ܶ$8}OþyBQ3kcg}c/׋S/׊3*bl[[Vhlŏ+z^sngb(V +,}-{_ W $Y֢ $lV..DF1ݕe]H$e]HJ2%5n.PK 5`.=YVcom/jacob/com/TypeLib.classTrW=Wb%@&e[&,AqbCZyz˃2Fqɣ,|H*/y*U@X"KSƪmO۷yk8YegqEEQA)FZ 0ؽ +ƽr%SvBT@:GxuձU$酭V~|(K EȯcT {*fe:\kNsE p;Gil ۮ[#uص7j;wG`J3F ֩_ݳX]]3w[3pfnm{M/VAnl9j?Z{(*xV[L8n8O]i-ا?R e&OIW=ldzzg{zNjj2WyRB>B_9|0PD/j7,c-<*|[oqdxiXHMEjz+&i<øNc/:3|e >M/G+r9WOSV??- KćO~wjle֝PK 5`.="ecom/jacob/com/VarDesc.classuYo@gs4G]wK'$4BKc;%)ԧIMq!%i@a'HNjn]ʏuj$7z 5Ό~ cRi8VUծDR#5Wū뇌y5إ4?7jZ hy'j z ON ph3 ! kCÇ5|DÝ>. wkkد5|w{5/SY[<_ ?~jMm] 퉮ɫ"퉶ZE777Υ$4-EШUWLMC*vu`N"LQߒHgoC1 R03ye'} 4ǓѪLDD,ȾDo[C(sz{z>ޜWp^KvGR+o_OOtBWHtF#q52΂jM=(03g%%EX<J3h.$WSwzz"dz˩o67/:EUMU -\XC ZObX*]eAF6LWL6'JȌjbkHS1i q!ItOQC,mjDhMqͩHn)a3FTZkf`C=)F#0oje,IQ;\C}m}MQ*~ϊU,J,NFEj6j̮1̮:3LފfSb)3y,,"c+dLzj)FYN]k"(7E2WG鄒&:kRt0ac9Ts2 &]Ka9XLH69Ua 1(Vrcb%08upa<*-JmS!'bB8ֻH98_1%O,YeF7-MfW'!IG$zebS!5K,'\jYpgZ> D'j-yT1SVfaKp U|XyXdbjU7 2L;՞EuUBŰXMŒJ̭1̱J\TTׄѾ&m'Rnjnꍧb]%dU!t &JXNF]99^Mq$LQG=i!nc5e-`'+"ٖ8ܘles+u2@G4fy$YwY]lF=NFoCP7R vxDhюLm]w9WT:;=!aǒq6zNZh=1ҟD3PȌ7r%3;a& L zs=ZHc61yxW,(itE_nQS[: +&ξL͐S2XS_Jy1d` \3cX;E-s`ߨxen~HG.yf+h*.EOʪ |ߠ\t*pN°%oxM6,njmlih U7-_hx1S |]u s !kᐊR<.>y鯊@ k!\Ҡ MDhqK3z7,'B(WE@- wіHPn9I :Eef7aF,*4k,4Wk"ަQ3[j()¼qS1.Is qGGaBM4gˆu!m|ǀ:6c?J%R߅dK Ĺls-l=rT'GKncl:Sh+HΟ9p8?KϹr)%+$:p2<'ί뮜;މAەӒ,4㙳u 84,–f@Bi|''YdD/=W |mt? ~$6 g%N<"?x:k Oہ߉_ \xdƁ߉7&0OߒlwX#.iFn !Zq0~ 8,/y7N z0Geӛn3(J?s%,f 5\Fתpfɧ8ϷŁjŁ>`)Y0TGoppbb&C8{ !lKmE,BY—i1n2pc@`85P6p\pe@ D@bHX$ NN .BG碏}tI0uGV,:o.;5)S]J (<ځi{`#Ytd7;]a 6C\t}fp>.fBehJ,&TYAi~.BٰK=YE |kn8KqCeNTȪhW sZ5Pܗ[1X+$1Zڅu ~8,/>l3T6؋?-=<@gg?-yN͙ >]Yh%aPhٻp{8(x&YW2_e*ٌo3N[0.PzFiAZƶ%io5-oQgˎ,o}IЫqL|5ac8/9كmj>kS~ 8|uȄ/=%eM?qfn-`e`YV-R|P ]fl~D9s0rN\H(HF)lFB-*kWh;6G|qn5s9+hp9IXY >,ЕV[KOq9C F1(*J_,EԑוdrCE<է;<{z @[n]ZG`ӿ'%@Z n&8o & b@+\*;(u3,߷o9Rh;2A۔*Qu}Շ"VWR?JR̷TVTX*T|J ~ftTn*[* 7>KMe=7-7tQ?[*)7J6KeZ7rLKM2x* ^ljQA!%Gdj*"ep@*WߔTOW xrޯ܀/*7⟔"VeEYܮ\ܩܦlURV>Ux=<=-vOӭTO8g5Σ y ~9 ~,H.kym!xNno wuлīU׿vC.ِv>VGdzgC\UP+~MNU*/~0Ay&*0U9Ӕw`.T)CU>6 ͠#m.3q:϶ =#C\\UlbpkU^\lat` ?]q@OCûZ!J'(HDI\b}_sRkN|ʃYPK 5`.=#x $com/jacob/com/VariantUtilities.classY |Td;\HL $yAx(*AjB &$@>I&a`2&$V-ն־UZlm-b;IJukun뾬EA?y$Li|}gq>܊ g^JWU%"WNxeR,r o  P Yz=Jj!0Aas6l);_vj Yxaå65iikhv[uV|{]c)$-n'u mP$_-ȭ$g(\?uX]aBJZVؾ{o eCPp7Oxj+Vx uml)8Ed`@սp%,T5YnRF !~wZV,F:Ф:lv7Yϥjh@4;( քA;) d0 i GϢʭYt8,R051g>uDWeźMVx rz<Ðql4T!!ЮV89#y_Zn\J hB6nq,:鈶(&%S5I3{PĊԁIH_3OIk٭ ibq"kSe O c(mMicPñ1 YƜj1GMi6EspuR0-A098YK6&QC4Ic,McF#}Y3#Jy7A+Cgn XԁuiXxK@8O{tiQB 1*4@o40e\er5ehHk)ݲΐSkJlwhN ҏæD$Sv #bPWq2e\t{L|13e1! Սr)f qu)Ѕ\jGhxr)L8Oxtw*[E?WX,J>ɨ";M|Z3phL|֔9r);/-mASalj69HH "+m~S5yipCoHfۦM@  + j D{. X@|{00DBݖ-=l<c1Wܧuf0"0 /Zb3Ee*bm2nԻ #Cp IG&> %A&[x4[㳴l,%kdXm #a9KԸ=`8H6kjO\)rHlC:|>0{'S_сU/}ޘ|{PgZb˓oʖ-ھ}hҨvȨۨSm4-zj,Lפ&^m3iZEQ3'h6k8Q5ژiTqT%;5~*f?1|'ͷ}i3@nї^_0kjeU颬o0GLBRHР[23:$ bWֹŷ㓔QV*}r$87ˁ/ʖ'R;Љ޽f ƒg o}ؐFۋO.lJ;B9!q6q h>vW^9wP%߀F1nTϕr nSk3ilhͤʦLLBHO%#Ks[24k2qMC#Wݒ) wRRv/%LgTNBqS٘Vu2EQTgIC ˳ R)W?eX#zgLA3lOSKSwKGoU8//_Q]_Pܐ“"ϟWqTFte~Y> W~8o˓ç_9@gY`YkԊ\0죇P^Ӎ j8oA=sXJ|Jb?ΣcR1 ŞOǟGG8_Jr9V%O<'Wf=4$O%iqqŝh]ɣ:C5~Oߓ͚}ҾV;#:IEQFHk 4cZ0 /q!.G=$v!p߃؅N\-AWH\ lwa)t9t5RŸ}EvCH.iN a _bȍ1 "&#.aH+?MvT?)=|JUVc!*pabKE.1|+tRwip$r+ a7`1!A `>52b2U\.I`/ObZ&+ZG|iͽ!TTW,c(a >#xfҤ b: y!Q'H7V7E(lXN܂S0 t(#ZN%E굋(Oܬ]U>%=G]Vr pg1[d v~ȯ?/ٍxn7mNUv-xߢӜ+უhy(.ӹum::_Õ:lС%!8M ?;ŖlUU!FIյն*ٍ,vƷ^ |NJfaQ+Jka6;48F:{q|tTzQ)tX)d%ʩdY*.N 3=2y`,$mٚ]RRvYe9g~w;4c+t*ݫ{ wیյ2*6=ųF0m)^k8)- 6~js]쭴s2V$v Ay%5ڄ҉Jقr . 6\+v(;ܠyLuv {S将le*fj(xl@i6<x$P#.f^v>v~F6̼;Ff 0FTF~̼TܤԢĤO~rbNXbQ&d),fdIJLOJ2]RJKS2ADyXXd UA )`BI@ 3X30n2؁$f`P*Tdx 82 #*yPK 5`.=#g["(com/jacob/com/WrongThreadException.classJQ7i҅)]XAbRhz}==AOUECEř30_P!GQE'i+1KQz$Pljqt.Ã}%#D.!X>BMmJB,ٙφ36+*r!چ&Ú lmzc[ ɐ.oR'dXTXZ׵5{3JxWmC^+oV~uv:x+Gd eJ@[w#<琉0"G9 ƏgV2/J%2 `TNNy|'䖪2f~PK <1= AMETA-INF/PK ;1=/5+META-INF/MANIFEST.MFPK <1= v aMETA-INF/JacobVersion.propertiesPK 4`.=Acom/PK 5`.= A7com/jacob/PK 5`.=A_com/jacob/activeX/PK 5`.=߼ y!(com/jacob/activeX/ActiveXComponent.classPK 5`.=D,- com/jacob/activeX/ActiveXDispatchEvents.classPK 5`.=헎.com/jacob/activeX/ActiveXInvocationProxy.classPK 5`.=Acom/jacob/com/PK 5`.=m_com/jacob/com/Automation.classPK 5`.=_5? =com/jacob/com/ComException.classPK 5`.=L듄,$"com/jacob/com/ComFailException.classPK 5`.=ѰTrcom/jacob/com/ComThread.classPK 4`.=*iOw"com/jacob/com/Currency.classPK 5`.=\_V!m&com/jacob/com/DateUtilities.classPK 5`.=EF*com/jacob/com/Dispatch.classPK 5`.=F ".;com/jacob/com/DispatchEvents.classPK 5`.=hu{4 &@com/jacob/com/DispatchIdentifier.classPK 5`.={'Uf),Ecom/jacob/com/DispatchNullProgramId.classPK 5`.=/0K!Gcom/jacob/com/DispatchProxy.classPK 5`.=F+!Icom/jacob/com/Documentation.classPK q/=2\hKcom/jacob/com/EnumVariant.classPK 5`.=VӴh Ocom/jacob/com/FuncDesc.classPK 4`.=mgcPcom/jacob/com/IUnknown.classPK 5`.= #Tcom/jacob/com/InvocationProxy.classPK 5`.=qK .Wcom/jacob/com/InvocationProxyAllVariants.classPK 5`.=~["^com/jacob/com/JacobException.classPK 5`.=倥v$_com/jacob/com/JacobReleaseInfo.classPK ]/=GrHq !jdcom/jacob/com/LibraryLoader.classPK 5`.=`:kcom/jacob/com/MainSTA.classPK 5`.=6T3+lcom/jacob/com/NotImplementedException.classPK ]/=s-^YL(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK F="`+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK F=m$$)org/jruby/ext/win32ole/RubyWIN32OLE.class1O B 1 1  1 1    1  1 1  1 1   1  1  1  1 1   1 1   ? 1EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java KL IJ                  !" #$com/jacob/com/Dispatch K% ~u =& '( ) *+ , -. /0 {1 {2 EF CDjava/lang/Object3 ) 45 67 8 9: ; <=#org/jruby/ext/win32ole/RubyWIN32OLE> ?@ WX KV AB CDE FG HI JK LM{{ N(}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses K GHorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date; toJavaObject()Ljava/lang/Object;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!1BCDEF GHIJKLMR *+,*N&# 'O  PQ RS TUKVM\ *+,*-N*, -O* PQ RS TU IJWXM/*N0O PQIYM@ +*N6O PQ Z[\]^_M1+N*::,+- W- N;<@AB)C,EO> `a1PQ1Z[1bc,RS#de\]fgM B- :* :,6*:*:+ NKLMPQ+S8UOf (haBPQBZ[BijBkjBlj:mn2oD+pq8 ha\ ]rIstuMm,2N*Y-*NZ \^O*PQZ[kv wx\]rIyzZy{uME*+,NcO PQZ[kv\]rIyzZy|gM\ *+,--NiO4 PQ Z[ ij kj }j\]~uM|,,2N-*+--d,*+-,Nn p$sO*,PQ,Z[,kv #x\]rIyzZyYMG*+ N xzOPQZ[\]Mc,N+*- N O*PQZ[jx\][srIyM!+:,:*-!" NO>!PQ!Z[!j!`jRSx\][srIgM] *+,-NO4 PQ Z[ ij kj lj\]uM],2N*+-,N  O*PQZ[kv x\]rIyzZyM%*-#: :*,$W+ NO>%PQ%Z[%x%kvoDFM ;- :,6* :*%: * &: + N 1Op ;PQ;Z[;ij;kj;lj;q3mn,pq$oD F 1 ha MB ' NOPQqM5+>d(d):6d+2!SN ,2O>q5PQ5v5q2q oDM4+*=()N6++!:-S-N" &,2O>&q4PQ4mn/q"oDM^+*,*-#, NO*PQZ[xkvM9*NOPQ M4 *)-NO  j M[+* +.E <E,E#*+/01Y*2+34*+56*+7N 09IRO[RS[a MX8M,+9*,:;N O RS MV$*!*<=*>**d*N"O $wxM8)( '?Y@AN  ?PK F=S7Ƽ win32ole.rbrequire 'java' require 'jacob.jar' require 'win32ole/win32ole' # <- java native impl of WIN32OLE require 'win32ole/win32ole_ruby' # <- ruby impl of WIN32OLE import java.util.Calendar import com.jacob.com.Variant import com.jacob.com.Automation import com.jacob.com.ComFailException import com.jacob.com.ComThread import com.jacob.com.Dispatch import com.jacob.com.EnumVariant import com.jacob.com.TypeInfo import com.jacob.com.TypeLib import com.jacob.com.VarDesc import com.jacob.com.VariantUtilities require 'win32ole/win32ole_error' require 'win32ole/win32ole_method' require 'win32ole/win32ole_variant' require 'win32ole/win32ole_variable' require 'win32ole/win32ole_event' require 'win32ole/win32ole_type' require 'win32ole/win32ole_typelib' PK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK F=⑜win32ole/utils.rbclass WIN32OLE module Utils # FIXME: I don't know specifically if this is a GMT or local date? OUT_OF_RANGE_DATE = Time.local(1899, 12, 30) def SafeStringValue(str) return str if str.kind_of?(::String) if str.respond_to?(:to_str) str = str.to_str return str if str.kind_of?(::String) end raise TypeError end def WIN32OLE_TYPEValue(value) raise TypeError.new("1st argument should be WIN32OLE_TYPE object") unless value.kind_of? WIN32OLE_TYPE value end # Convert the supplied variant value to an equivalent Ruby value. # If dispose is true then also dispose the variant itself. def from_variant(value) object = VariantUtilities.variant_to_object(value) case object when Dispatch then object = WIN32OLE.new(object) when java.util.Date then object = java_date2ruby_time(object) end # Jacob will return null on out of bound dates whereas MRI returns # some date windows normally returns. We will match this. if object.nil? && !value.nil? case value.getvt when Variant::VariantDate, (Variant::VariantDate|Variant::VariantByref) then object = OUT_OF_RANGE_DATE end end object end # Simliar to MRI:vtdate2rbtime but we work with Java date instead of # raw variant type def java_date2ruby_time(date) calendar = Calendar.get_instance calendar.time = date Time.local(calendar.get(Calendar::YEAR), calendar.get(Calendar::MONTH), calendar.get(Calendar::DAY_OF_MONTH), calendar.get(Calendar::HOUR_OF_DAY), calendar.get(Calendar::MINUTE), calendar.get(Calendar::SECOND)) end def all_methods(typeinfo, &block) # MRI: olemethod_from_typeinfo return unless typeinfo # Not all ole servers have this info # Find method in this type. ret = find_all_methods_in(nil, typeinfo, &block) return ret if ret # Now check all other type impls typeinfo.impl_types_count.times do |i| begin href = typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = typeinfo.get_ref_type_info(href) ret = find_all_methods_in(typeinfo, ref_typeinfo, &block) return ret if ret rescue ComFailException => e puts "Error getting impl types #{e}" end end nil end # MRI: ole_method_sub def find_all_methods_in(old_typeinfo, typeinfo, &block) typeinfo.funcs_count.times do |i| begin desc = typeinfo.get_func_desc(i) docs = typeinfo.get_documentation(desc.memid) ret = yield typeinfo, old_typeinfo, desc, docs, i return ret if ret rescue ComFailException => e puts "Error getting method info #{e}" end end nil end def typeinfo_from_ole # MRI: typeinfo_from_ole typeinfo = @dispatch.type_info docs = typeinfo.get_documentation(-1) type_lib = typeinfo.get_containing_type_lib type_lib.get_type_info_count.times do |i| begin ti = type_lib.get_type_info(i) tdocs = type_lib.get_documentation(i) return typelib.get_type_info(i) if tdocs.name == docs.name rescue ComFailException => e # We continue on failure. end end type_info # Actually MRI seems like it could fail in weird case end def load_typelib(path_reg, arch) path = path_reg.open(arch) { |r| r.read(nil) }[1] # puts "PATH = #{path}" begin Automation.loadTypeLib(path) rescue ComFailException => e # puts "Failed to load #{name} fom #{path} because: #{e}" nil end end def find_all_typeinfo(typelib) typelib.type_info_count.times do |i| docs = typelib.get_documentation(i) next unless docs info = typelib.get_type_info(i) next unless info yield info, docs end end def all_vars(typeinfo) typeinfo.vars_count.times do |i| desc = typeinfo.get_var_desc(i) next unless desc names = typeinfo.get_names(desc.memid) next if !names || names.length == 0 name = names[0] next unless name yield desc, name end end def reg_each_key_for(reg, subkey, &block) reg.open(subkey) do |subkey_reg| subkey_reg.each_key { |key, wtime| block.call(subkey_reg, key) } end end # Walks all guid/clsid entries and yields every single version # of those entries to the supplied block. See search_registry as # an example of its usage. def typelib_registry_each_guid_version Win32::Registry::HKEY_CLASSES_ROOT.open('TypeLib') do |reg| reg.each_key do |guid, wtime| reg.open(guid) do |guid_reg| guid_reg.each_key do |version_string, wtime| version = version_string.to_f begin guid_reg.open(version_string) do |version_reg| yield guid, version, version_reg end rescue Win32::Registry::Error => e # Version Entry may not contain anything. Skip. end end end end end end def registry_subkey(reg, *valid_subkeys) reg.each_key do |inner, wtime| reg_each_key_for(reg, inner) do |subkey_reg, subkey| yield subkey_reg, subkey if valid_subkeys.include? subkey end end end def search_registry(typelib_name) # MRI: oletypelib_search_registry typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # puts "GUID #{guid} #{version} #{arch} #{type_lib}" return type_lib if type_lib && name == typelib_name end end nil end def variable_kind_string(varkind) case varkind when VarDesc::VAR_PERINSTANCE then "PERINSTANCE" when VarDesc::VAR_STATIC then "STATIC" when VarDesc::VAR_CONST then "CONSTANT" when VarDesc::VAR_DISPATCH then "DISPATCH" else "UNKNOWN" end end end end PK F=w_>"?"?win32ole/win32ole.jarPK ^F= META-INF/PK ^F=QMETA-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.7.1 Created-By: 17.0-b17 (Sun Microsystems Inc.) Class-Path: lib/jruby.jar lib/jacob.jar PK L(Lcom/jacob/com/Dispatch;Lcom/jacob/com/InvocationProxy;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jruby/ext/win32ole/RubyDispatchEvents;dispatchLcom/jacob/com/Dispatch;proxyLcom/jacob/com/InvocationProxy;progIdLjava/lang/String;setupDispatchEventHandlerl(Lcom/jacob/com/Dispatch;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/ext/win32ole/RubyDispatchEvents; eventHandler'Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyDispatchEvents.java #)org/jruby/ext/win32ole/RubyDispatchEvents*org/jruby/ext/win32ole/RubyInvocationProxy $% &'  com/jacob/com/DispatchEvents?(Lcom/jacob/com/Dispatch;Ljava/lang/Object;Ljava/lang/String;)V*(Lorg/jruby/runtime/builtin/IRubyObject;)Vcom/jacob/com/Dispatch getProgramId()Ljava/lang/String;!  T*+,-   *   IY*Y+*  PK *(Lorg/jruby/runtime/builtin/IRubyObject;)VCodeLineNumberTableLocalVariableTablethis,Lorg/jruby/ext/win32ole/RubyInvocationProxy;invokeC(Ljava/lang/String;[Lcom/jacob/com/Variant;)Lcom/jacob/com/Variant;iI methodNameLjava/lang/String; variantArgs[Lcom/jacob/com/Variant;context!Lorg/jruby/runtime/ThreadContext;lengthargs([Lorg/jruby/runtime/builtin/IRubyObject; SourceFileRubyInvocationProxy.java 1  23 4 56%org/jruby/runtime/builtin/IRubyObject7 89 :;*org/jruby/ext/win32ole/RubyInvocationProxycom/jacob/com/InvocationProxy()V getRuntime()Lorg/jruby/Ruby;org/jruby/RubygetCurrentContext#()Lorg/jruby/runtime/ThreadContext;#org/jruby/ext/win32ole/RubyWIN32OLE fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject; callMethod(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;!   T**+*+  C*N,6:6*,2S*-+W" -3AHCCC; 7 0!"#$PK ^F="`+org/jruby/ext/win32ole/RubyWIN32OLE$1.class1  ()VCodeLineNumberTableLocalVariableTablethis InnerClasses'Lorg/jruby/ext/win32ole/RubyWIN32OLE$1;allocateN(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;runtimeLorg/jruby/Ruby;klassLorg/jruby/RubyClass; SourceFileRubyWIN32OLE.javaEnclosingMethod #org/jruby/ext/win32ole/RubyWIN32OLE %org/jruby/ext/win32ole/RubyWIN32OLE$1java/lang/Object!org/jruby/runtime/ObjectAllocator((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V0 /*    H Y+,      PK ^F=_%_%)org/jruby/ext/win32ole/RubyWIN32OLE.class1W D 1 1  1 1    1  1 1  1 1   1  1  1  1 1   1 1    A 1 EMPTY_OBJECT_ARGS[Ljava/lang/Object;EMPTY_ERROR_ARGS[IWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator;dispatchLcom/jacob/com/Dispatch;((Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jruby/ext/win32ole/RubyWIN32OLE;runtimeLorg/jruby/Ruby; metaClassLorg/jruby/RubyClass;@(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lcom/jacob/com/Dispatch;)V getDispatch()Lcom/jacob/com/Dispatch;J(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;context!Lorg/jruby/runtime/ThreadContext;RuntimeVisibleAnnotationsLorg/jruby/anno/JRubyMethod;eachc(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;valueLcom/jacob/com/Variant;blockLorg/jruby/runtime/Block; enumVariantLcom/jacob/com/EnumVariant; _getproperty(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; returnValuedispid'Lorg/jruby/runtime/builtin/IRubyObject;argsargTypes argsArrayLorg/jruby/RubyArray; objectArgs dispatchIdIrequired initializer(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;([Lorg/jruby/runtime/builtin/IRubyObject;idLjava/lang/String;restinvoke_invoke typesArraymethod_missing methodNameole_freeop_arefq(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;property propertyNamename[]op_aset(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;[]= _setproperty setproperty invokeSet(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject; errorArgsinvokeInternal(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;I)Lorg/jruby/runtime/builtin/IRubyObject; dispatchType makeErrorArgs(I)[IsizemakeObjectArgs>([Lorg/jruby/runtime/builtin/IRubyObject;I)[Ljava/lang/Object;irubyArgs startIndexlength*(Lorg/jruby/RubyArray;)[Ljava/lang/Object;objectLjava/lang/Object;invokeMethodOrGettoJava%(Ljava/lang/Class;)Ljava/lang/Object;klassLjava/lang/Class;toObject;(Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Object; rubyObject fromVariantP(Lorg/jruby/Ruby;Lcom/jacob/com/Variant;)Lorg/jruby/runtime/builtin/IRubyObject;variant date2rubyI(Lorg/jruby/Ruby;Ljava/util/Date;)Lorg/jruby/runtime/builtin/IRubyObject;dateLjava/util/Date;calLjava/util/Calendar;toProgID&(Ljava/lang/String;)Ljava/lang/String;()V SourceFileRubyWIN32OLE.java MN KL              ! "# "$ %&' ()com/jacob/com/Dispatch M* w =+ ,- . /0 1 23 45 }6 }7 GH EFjava/lang/Object8 . 9: ;< = >? @ AB#org/jruby/ext/win32ole/RubyWIN32OLEC DE YZ MX FG HI org/jruby/javasupport/JavaObjectJ KLM NO PQ RS TU{{ V-}}%org/jruby/ext/win32ole/RubyWIN32OLE$1 InnerClasses M IJorg/jruby/RubyObjectorg/jruby/runtime/ThreadContext getRuntime()Lorg/jruby/Ruby;org/jruby/javasupport/JavaUtilconvertJavaToUsableRubyObjectK(Lorg/jruby/Ruby;Ljava/lang/Object;)Lorg/jruby/runtime/builtin/IRubyObject; toEnumVariant()Lcom/jacob/com/EnumVariant;com/jacob/com/EnumVarianthasMoreElements()Z nextElement()Lcom/jacob/com/Variant;org/jruby/runtime/Blockyieldorg/jruby/RubygetNil)()Lorg/jruby/runtime/builtin/IRubyObject;%org/jruby/runtime/builtin/IRubyObjectconvertToArray()Lorg/jruby/RubyArray;org/jruby/RubyIntegernum2long*(Lorg/jruby/runtime/builtin/IRubyObject;)Jcall2(Lcom/jacob/com/Dispatch;I)Lcom/jacob/com/Variant;D(Lcom/jacob/com/Dispatch;ILjava/lang/Object;)Lcom/jacob/com/Variant;convertToString()Lorg/jruby/RubyString;org/jruby/RubyString asJavaString()Ljava/lang/String;(Ljava/lang/String;)Vjava/lang/StringendsWith(Ljava/lang/String;)Z()I substring(II)Ljava/lang/String; safeReleasegetC(Lcom/jacob/com/Dispatch;Ljava/lang/String;)Lcom/jacob/com/Variant;put?(Lcom/jacob/com/Dispatch;Ljava/lang/String;Ljava/lang/Object;)VY(Lcom/jacob/com/Dispatch;Ljava/lang/String;I[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;H(Lcom/jacob/com/Dispatch;II[Ljava/lang/Object;[I)Lcom/jacob/com/Variant;org/jruby/RubyArray eltInternal*(I)Lorg/jruby/runtime/builtin/IRubyObject;callNV(Lcom/jacob/com/Dispatch;Ljava/lang/String;[Ljava/lang/Object;)Lcom/jacob/com/Variant;com/jacob/com/VariantgetType()S getBoolean newBoolean(Z)Lorg/jruby/RubyBoolean;win32ole/Win32oleService getMetaClass()Lorg/jruby/RubyClass;getDate()Ljava/util/Date; toJavaObject()Ljava/lang/Object;org/jruby/javasupport/Javawrap`(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;java/util/Calendar getInstance()Ljava/util/Calendar;setTime(Ljava/util/Date;)VgetTimeInMillis()JnewTime(J)Lorg/jruby/RubyTime; startsWith!1DEFGH IJKLMNOR *+,*P&# 'Q  RS TU VWMXO\ *+,*-P*, -Q* RS TU VW KLYZO/*P0Q RSK[O@ +*P6Q RS \]^_`aO1+N*::,+- W- P;<@AB)C,EQ> bc1RS1\]1de,TU#fg^_hiO B- :* :,6*:*:+ PKLMPQ+S8UQf (jcBRSB\]BklBmlBnl:op2qF+rs8 jc^ _tIuvwOm,2N*Y-*PZ \^Q*RS\]mx yz^_tI{|Z{}wOE*+,PcQ RS\]mx^_tI{|Z{~iO\ *+,--PiQ4 RS \] kl ml l^_wO|,,2N-*+--d,*+-,Pn p$sQ*,RS,\],mx #z^_tI{|Z{[OG*+ P xzQRS\]^_Oc,N+*- P Q*RS\]lz^_[stI{O!+:,:*-!" PQ>!RS!\]!l!blTUz^_[stIiO] *+,-PQ4 RS \] kl ml nl^_wO],2N*+-,P  Q*RS\]mx z^_tI{|Z{O%*-#: :*,$W+ PQ>%RS%\]%z%mxqFHO ;- :,6* :*%: * &: + P 1Qp ;RS;\];kl;ml;nl;s3op,rs$qF H 1 jc OB ' PQRSsO5+>d(d):6d+2!SP ,2Q>s5RS5x5s2s qFO4+*=()N6++!:-S-P" &,2Q>&s4RS4op/s"qFO^+*,*-#, PQ*RS\]zmxO9*PQRS O4 *)-PQ  l Ol+* +.E <E,E#*+/01Y*2+34*+56*+7M,8 *,9,P 09IR[Q lTUlc[l OX:M,+;*,<=P Q TU OV$*!*>?*@**d*P"Q $yzO8)( 'AYBCP  APK ?@AB win32oleClassLjava/lang/ref/WeakReference; Signature4Ljava/lang/ref/WeakReference;()VCodeLineNumberTableLocalVariableTablethisLwin32ole/Win32oleService; basicLoad(Lorg/jruby/Ruby;)ZruntimeLorg/jruby/Ruby;objectLorg/jruby/RubyClass;win32ole ExceptionsC getMetaClass()Lorg/jruby/RubyClass; SourceFileWin32oleService.java D EFLOADING WIN32OLEG HIJ KL M)WIN32OLE NO PQ#org/jruby/ext/win32ole/RubyWIN32OLE RSjava/lang/ref/WeakReference T  UVorg/jruby/RubyClasswin32ole/Win32oleServicejava/lang/Object*org/jruby/runtime/load/BasicLibraryServicejava/io/IOExceptionjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintln(Ljava/lang/String;)Vcom/jacob/com/LibraryLoaderloadJacobLibraryorg/jruby/Ruby getObjectWIN32OLE_ALLOCATOR#Lorg/jruby/runtime/ObjectAllocator; defineClassa(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;defineAnnotatedMethods(Ljava/lang/Class;)V(Ljava/lang/Object;)Vget()Ljava/lang/Object;!/*   /+M+, N- Y-  "-*//!"#$%$&' ()" *+PK ^F= AMETA-INF/PK ^F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK F= AMETA-INF/PK F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK )F= AMETA-INF/PK (F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK oF= AMETA-INF/PK nF=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK ֆF= AMETA-INF/PK ՆF=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK F= AMETA-INF/PK F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK 7F= AMETA-INF/PK 6F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK F= AMETA-INF/PK F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK F= AMETA-INF/PK F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK F= AMETA-INF/PK F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK #F= AMETA-INF/PK "F=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK ĝF= AMETA-INF/PK ÝF=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK lF= AMETA-INF/PK kF=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK PG= AMETA-INF/PK PG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK PG= AMETA-INF/PK PG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK QG= AMETA-INF/PK QG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK 9UG= AMETA-INF/PK 8UG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK hZG= AMETA-INF/PK gZG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK ^G= AMETA-INF/PK ^G=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK gG= AMETA-INF/PK gG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK PgG= AMETA-INF/PK OgG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK sG= AMETA-INF/PK sG=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK yK= AMETA-INF/PK yK=Q+META-INF/MANIFEST.MFPK Qwin32ole/win32ole_param.rbPK tK=u?  Twin32ole/win32ole_ruby.rbPK tK= ^win32ole/win32ole_type.rbPK F=$bjwin32ole/win32ole_typelib.rbPK F=]wwqwin32ole/win32ole_variable.rbPK F=Wctwin32ole/win32ole_variant.rbPK6wPK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK tK=ofccwin32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end org.jruby.ext.win32ole.RubyDispatchEvents.setupDispatchEventHandler(ole, self) end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK tK=]awin32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def name @docs.name end alias :to_s :name def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK tK=Ԏ))win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail details = [] typedesc_value(@param.vt, details) details end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK tK=u?  win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(type_info) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(type_info) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_get_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & Dispatch::Put members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def ole_put_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & (Dispatch::Put|Dispatch::PutRef) members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end # TODO: All these methods in MRI do many continues on error!!! def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK tK= win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK F=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK F=]wwwin32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end # TODO: Implement ole_type, ole_type_detail def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK yK= AMETA-INF/PK yK=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK aK= AMETA-INF/PK `K=Q+META-INF/MANIFEST.MFPK win32ole/win32ole_ruby.rbPK tK= H win32ole/win32ole_type.rbPK F=$bT win32ole/win32ole_typelib.rbPK F=]ww[ win32ole/win32ole_variable.rbPK F=Wc^ win32ole/win32ole_variant.rbPK6a PK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK YN=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK tK=]awin32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def name @docs.name end alias :to_s :name def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK tK=Ԏ))win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail details = [] typedesc_value(@param.vt, details) details end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK tK=u?  win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(type_info) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(type_info) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_get_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & Dispatch::Put members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def ole_put_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & (Dispatch::Put|Dispatch::PutRef) members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end # TODO: All these methods in MRI do many continues on error!!! def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK tK= win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK F=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK F=]wwwin32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end # TODO: Implement ole_type, ole_type_detail def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK YN= AMETA-INF/PK YN=Q+META-INF/MANIFEST.MFPK " end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK "[N= AMETA-INF/PK ![N=Q+META-INF/MANIFEST.MFPK #win32ole/win32ole_typelib.rbPK F=]wwE#win32ole/win32ole_variable.rbPK F=WcpH#win32ole/win32ole_variant.rbPK6~K#PK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK YN=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK tK=]awin32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def name @docs.name end alias :to_s :name def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK tK=Ԏ))win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail details = [] typedesc_value(@param.vt, details) details end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK tK=u?  win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(type_info) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(type_info) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_get_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & Dispatch::Put members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end def ole_put_methods members = [] all_methods(type_info) do |typeinfo, old_typeinfo, desc, docs, i| if desc.invkind & (Dispatch::Put|Dispatch::PutRef) members << WIN32OLE_METHOD.new(nil, typeinfo, old_typeinfo, desc, docs, i) end nil end members end # TODO: All these methods in MRI do many continues on error!!! def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK tK= win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK F=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK F=]wwwin32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end # TODO: Implement ole_type, ole_type_detail def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK F=Wcwin32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_USERDEFINED = 0 VT_PTR = 26 # Pointer VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference end end PK fnN= AMETA-INF/PK enN=Q+META-INF/MANIFEST.MFPK e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 1R=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 1R=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 1R=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 1R=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 1R=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 1R=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK 1R= AMETA-INF/PK 0R==+META-INF/MANIFEST.MFPK 1R=Ajruby-win32ole/PK  e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 1R=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 1R=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 1R=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 1R=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 1R=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 1R=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK ^)win32ole/win32ole_typelib.rbPK 1R=+/e)win32ole/win32ole_variable.rbPK 1R=Q \~h)win32ole/win32ole_variant.rbPK0jo)PK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK YN=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK 1R=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 1R=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 1R=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 1R=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 1R=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 1R=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 1R=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK OR= AMETA-INF/PK NR==+META-INF/MANIFEST.MFPK 1R=Ajruby-win32ole/PK '')org/jruby/ext/win32ole/RubyWIN32OLE.classPK OR=`9  2racob.jarPK "[N== )win32ole.rbPK OR=s6.win32ole/Win32oleService.classPK 1R=e3win32ole/utils.rbPK OR=+ㇰw)w)Owin32ole/win32ole.jarPK F= _S/r,win32ole/win32ole_error.rbPK YN=u63},win32ole/win32ole_event.rbPK 1R=HY 5,win32ole/win32ole_method.rbPK 1R=-,win32ole/win32ole_param.rbPK 1R=I}T l,win32ole/win32ole_ruby.rbPK 1R=d d C,win32ole/win32ole_type.rbPK 1R=$b,win32ole/win32ole_typelib.rbPK 1R=+,win32ole/win32ole_variable.rbPK 1R=Q \,win32ole/win32ole_variant.rbPK0 -PK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK YN=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK 1R=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 1R=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 1R=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 1R=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 1R=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 1R=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 1R=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK  R= AMETA-INF/PK  R==+META-INF/MANIFEST.MFPK 1R=Ajruby-win32ole/PK '')org/jruby/ext/win32ole/RubyWIN32OLE.classPK  R=`9  1racob.jarPK "[N== )win32ole.rbPK OR=s6.win32ole/Win32oleService.classPK 1R=e3win32ole/utils.rbPK  R=w_P -P -Owin32ole/win32ole.jarPK F= _S/[0win32ole/win32ole_error.rbPK YN=u63\0win32ole/win32ole_event.rbPK 1R=HY _0win32ole/win32ole_method.rbPK 1R=k0win32ole/win32ole_param.rbPK 1R=I}T  o0win32ole/win32ole_ruby.rbPK 1R=d d x0win32ole/win32ole_type.rbPK 1R=$b}0win32ole/win32ole_typelib.rbPK 1R=+n0win32ole/win32ole_variable.rbPK 1R=Q \0win32ole/win32ole_variant.rbPK00PK F= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK YN=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK 1R=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 1R=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 1R=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 1R=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 1R=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 1R=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 1R=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK RS= AMETA-INF/PK RS==+META-INF/MANIFEST.MFPK 1R=Ajruby-win32ole/PK '')org/jruby/ext/win32ole/RubyWIN32OLE.classPK RS=`9  1racob.jarPK "[N== )win32ole.rbPK OR=s6.win32ole/Win32oleService.classPK 1R=e3win32ole/utils.rbPK RS=hl00Owin32ole/win32ole.jarPK F= _S/3win32ole/win32ole_error.rbPK YN=u633win32ole/win32ole_event.rbPK 1R=HY s3win32ole/win32ole_method.rbPK 1R=k3win32ole/win32ole_param.rbPK 1R=I}T 4win32ole/win32ole_ruby.rbPK 1R=d d  4win32ole/win32ole_type.rbPK 1R=$b4win32ole/win32ole_typelib.rbPK 1R=+ 4win32ole/win32ole_variable.rbPK 1R=Q \\#4win32ole/win32ole_variant.rbPK0H*4PK hSS= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK hSS=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK hSS=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK hSS=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK hSS=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK hSS=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK hSS=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK hSS=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK hSS=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK iSS= AMETA-INF/PK hSS==+META-INF/MANIFEST.MFPK hSS=Ajruby-win32ole/PK hSS=Aorg/PK hSS= A?org/jruby/PK hSS=Agorg/jruby/ext/PK hSS=Aorg/jruby/ext/win32ole/PK hSS= Awin32ole/PK hSS=P|jruby-win32ole.rbPK hSS=??jruby-win32ole/version.rbPK hSS=S60uorg/jruby/ext/win32ole/RubyInvocationProxy.classPK hSS=N\+ org/jruby/ext/win32ole/RubyWIN32OLE$1.classPK hSS=>'')org/jruby/ext/win32ole/RubyWIN32OLE.classPK hSS=`9  9racob.jarPK hSS=s6Jwin32ole/Win32oleService.classPK hSS=ePwin32ole/utils.rbPK hSS=D"2424=lwin32ole/win32ole.jarPK hSS= _S/6win32ole/win32ole_error.rbPK hSS=u63 6win32ole/win32ole_event.rbPK hSS=HY 6win32ole/win32ole_method.rbPK hSS=6win32ole/win32ole_param.rbPK hSS=I}T 6win32ole/win32ole_ruby.rbPK hSS=d d ϼ6win32ole/win32ole_type.rbPK hSS=$bj6win32ole/win32ole_typelib.rbPK hSS=+[6win32ole/win32ole_variable.rbPK hSS=Q \6win32ole/win32ole_variant.rbPK6PK hSS= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK hSS=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK hSS=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK hSS=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK hSS=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK hSS=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK hSS=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK hSS=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK hSS=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK SS= AMETA-INF/PK SS==+META-INF/MANIFEST.MFPK hSS=Ajruby-win32ole/PK hSS=Aorg/PK hSS= A?org/jruby/PK hSS=Agorg/jruby/ext/PK hSS=Aorg/jruby/ext/win32ole/PK SS= Awin32ole/PK hSS=P|jruby-win32ole.rbPK hSS=??jruby-win32ole/version.rbPK hSS=S60uorg/jruby/ext/win32ole/RubyInvocationProxy.classPK hSS=N\+ org/jruby/ext/win32ole/RubyWIN32OLE$1.classPK hSS=>'')org/jruby/ext/win32ole/RubyWIN32OLE.classPK hSS=`9  9racob.jarPK hSS=s6Jwin32ole/Win32oleService.classPK hSS=ePwin32ole/utils.rbPK SS=J66=lwin32ole/win32ole.jarPK hSS= _S/N9win32ole/win32ole_error.rbPK hSS=u63*O9win32ole/win32ole_event.rbPK hSS=HY R9win32ole/win32ole_method.rbPK hSS=^9win32ole/win32ole_param.rbPK hSS=I}T b9win32ole/win32ole_ruby.rbPK hSS=d d k9win32ole/win32ole_type.rbPK hSS=$bx9win32ole/win32ole_typelib.rbPK hSS=+|9win32ole/win32ole_variable.rbPK hSS=Q \˂9win32ole/win32ole_variant.rbPK9PK US= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK US=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK US=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK US=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK US=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK US=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK US=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK US=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK US=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK US= AMETA-INF/PK US==+META-INF/MANIFEST.MFPK US=Ajruby-win32ole/PK US=Aorg/PK US= A?org/jruby/PK US=Agorg/jruby/ext/PK US=Aorg/jruby/ext/win32ole/PK US= Awin32ole/PK US=P|jruby-win32ole.rbPK US=??jruby-win32ole/version.rbPK US=S60uorg/jruby/ext/win32ole/RubyInvocationProxy.classPK US=N\+ org/jruby/ext/win32ole/RubyWIN32OLE$1.classPK US=>'')org/jruby/ext/win32ole/RubyWIN32OLE.classPK US=QULL 9racob.jarPK US=||~Jwin32ole/Win32oleService.classPK US=e6Pwin32ole/utils.rbPK US=ɴА9А9kwin32ole/win32ole.jarPK US= _S/;win32ole/win32ole_error.rbPK US=u63;win32ole/win32ole_event.rbPK US=HY <win32ole/win32ole_method.rbPK US= <win32ole/win32ole_param.rbPK US=I}T <win32ole/win32ole_ruby.rbPK US=d d <win32ole/win32ole_type.rbPK US=$b]'<win32ole/win32ole_typelib.rbPK US=+N.<win32ole/win32ole_variable.rbPK US=Q \1<win32ole/win32ole_variant.rbPK8<PK 0]S= _S/win32ole/win32ole_error.rbclass WIN32OLERuntimeError < RuntimeError def initialize(cause=nil) @cause = cause end def backtrace @cause ? @cause.backtrace : super end def to_s @cause ? @cause.to_s : super end end PK 0]S=u63win32ole/win32ole_event.rbclass WIN32OLE_EVENT def initialize(ole, event_name=nil) @event_handlers = {} raise TypeError.new("1st parameter must be WIN32OLE object") if !ole.kind_of? WIN32OLE if event_name.nil? # Default event name # TODO: get default event end dispatch = ole.dispatch DispatchEvents.new dispatch, RubyInvocationProxy.new(self), dispatch.program_id end def on_event(name=nil, &block) if name @event_handlers[name.to_s] = block else @default_handler = block end end def method_missing(name, *args) name = name.to_s handler = @event_handlers[name] if handler handler.call *args elsif @default_handler @default_handler.call name, *args end end # Almost noop this. We don't because it get CPU hot when people put this # in a hot loop! def self.message_loop DispatchEvents.message_loop end end PK 0]S=HY win32ole/win32ole_method.rbclass WIN32OLE_METHOD attr_accessor :oletype, :typeinfo def initialize(*args) # TODO: 2-arg missing currently unuised oletype ivar if args.length == 6 # Internal initializer @oletype, @typeinfo, @owner_typeinfo, @desc, @docs, @index = *args elsif args.length == 2 # Normal constructor @oletype, name = WIN32OLE_TYPEValue(args[0]), SafeStringValue(args[1]) all_methods(@oletype.typeinfo) do |ti, oti, desc, docs, index| if docs.name.downcase == name.downcase @typeinfo, @owner_typeinfo, @desc, @docs, @index = ti, oti, desc, docs, index break; end end raise WIN32OLERuntimeError.new "not found: #{name}" if !@typeinfo else # Error raise ArgumentError.new("2 for #{args.length}") end end def dispid @desc.memid end def event? return false if @owner_typeinfo.typekind != TypeInfo::TYPEKIND_COCLASS @owner_typeinfo.impl_types_count.times do |i| begin flags = @owner_typeinfo.get_impl_type_flags(i) if flags & TypeInfo::IMPLTYPEFLAG_FSOURCE href = @owner_typeinfo.get_ref_type_of_impl_type(i) ref_typeinfo = @owner_typeinfo.get_ref_type_info(href) func_desc = ref_typeinfo.func_desc(@index) documentation = ref_typeinfo.documentation(func_desc.memid) return true if documentation.name == name end rescue ComFailException => e end end false end def event_interface return nil unless event? typelib = @typeinfo.containing_type_lib documentation = typelib.documentation(typelib.index) documentation.name end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def invkind @desc.invkind end def invoke_kind invkind = @desc.invkind if invkind & Dispatch::Get && invkind & Dispatch::Put return "PROPERTY" elsif invkind & Dispatch::Get return "PROPERTYGET" elsif invkind & Dispatch::Put return "PROPERTYPUT" elsif invkind & Dispatch::PutRef return "PROPERTYPUTREF" elsif invkind & Dispatch::Method return "FUNC" else return "UNKOWN" end end def name @docs.name end alias :to_s :name def offset_vtbl @desc.vtable_offset end def params arr = [] @desc.parameters.to_a.each_with_index do |param, i| arr << WIN32OLE_PARAM.new(self, i, param) end arr end def return_type typedesc_value(@desc.return_type.vt) end def return_type_detail typedesc_value(@desc.return_type.vt, []) end def return_vtype @desc.return_type.vt end def size_opt_params @desc.opt_params_count end def size_params @desc.params_count end def visible? (@desc.flags & (FuncDesc::FUNCFLAG_FRESTRICTED | FuncDesc::FUNCFLAG_FHIDDEN | FuncDesc::FUNCFLAG_FNONBROWSABLE)) == 0 end def inspect name end include WIN32OLE::Utils end PK 0]S=win32ole/win32ole_param.rbclass WIN32OLE_PARAM attr_accessor :name def initialize(method, index, param_info=nil) raise TypeError.new("1st parameter must be WIN32OLE object") if !method.kind_of? WIN32OLE_METHOD @method, @index, @param = method, index, param_info end def default @param.is_default_value ? RubyWIN32OLE.from_variant(JRuby.runtime, @param.get_default_value) : nil end def input? @param.is_in end def name @param.name end alias :to_s :name alias :inspect :name def ole_type typedesc_value(@param.vt) end def ole_type_detail typedesc_value(@param.vt, []) end def output? @param.is_out end def optional? @param.is_optional end def retval? @param.is_return_value end include WIN32OLE::Utils end PK 0]S=I}T win32ole/win32ole_ruby.rbrequire 'win32ole/utils' require 'jruby' # Shorthand vocabulary: # ti, oti - typeinfo or owner_typeinfo class WIN32OLE CP_ACP = 0 CP_OEMCP = 1 CP_MACCP = 2 CP_THREAD_ACP = 3 CP_SYMBOL = 42 CP_UTF7 = 65000 CP_UTF8 = 65001 def ole_method(name) all_methods(typeinfo_from_ole) do |*args| return WIN32OLE_METHOD.new(nil, *args) if name == args[3].name nil end end alias :ole_method_help :ole_method def ole_methods members = [] all_methods(typeinfo_from_ole) do |*args| members << WIN32OLE_METHOD.new(nil, *args) nil end members end def ole_func_methods methods_with_flag(Dispatch::Method) end def ole_get_methods methods_with_flag(Dispatch::Get) end def ole_put_methods methods_with_flag(Dispatch::Put|Dispatch::PutRef) end def ole_type typelib = type_info.containing_type_lib docs = typelib.documentation(typelib.index) WIN32OLE_TYPE.new typelib, type_info, docs end alias :ole_obj_help :ole_type def ole_typelib typelib = type_info.containing_type_lib WIN32OLE_TYPELIB.new typelib, nil end def type_info dispatch.type_info end class << self def codepage @@codepage ||= CP_ACP end def codepage=(new_codepage) @@codepage = new_codepage end def connect(id) WIN32OLE.new to_progid(id) end def const_load(ole, a_class=WIN32OLE) constants = {} ole.type_info.containing_type_lib.type_info.to_a.each do |info| info.vars_count.times do |i| var_desc = info.get_var_desc(i) # TODO: Missing some additional flag checks to limit no. of constants if var_desc.constant name = first_var_name(info, var_desc) name = name[0].chr.upcase + name[1..-1] if name if constant?(name) a_class.const_set name, RubyWIN32OLE.from_variant(JRuby.runtime, var_desc.constant) else # vars which don't start [A-Z]? constants[name] = var_desc.constant end end end end a_class.const_set 'CONSTANTS', constants nil end def to_progid(id) id =~ /^{(.*)}/ ? "clsid:#{$1}" : id end private def constant?(name) name =~ /^[A-Z]/ end def first_var_name(type_info, var_desc) type_info.get_names(var_desc.memid)[0] rescue nil end end private include WIN32OLE::Utils end PK 0]S=d d win32ole/win32ole_type.rbclass WIN32OLE_TYPE attr_reader :typeinfo def initialize(*args) case args.length when 2 then typelib_name, olename = SafeStringValue(args[0]), SafeStringValue(args[1]) @typelib = WIN32OLE_TYPELIB.new(typelib_name) # Internal call find_all_typeinfo(@typelib.typelib) do |info, docs| if (docs.name == olename) @typeinfo, @docs = info, docs break end end raise WIN32OLERuntimeError.new("not found `#{olename}` in `#{typelib_name}") unless @typeinfo when 3 then @typelib, @typeinfo, @docs = *args else raise ArgumentError.new("wrong number of arguments (#{args.length} for 2)") end end def guid @typeinfo.guid end def helpcontext @docs.help_context end def helpstring @docs.doc_string end def helpfile @docs.help_file end def name @docs.name end def major_version @typeinfo.major_version end def minor_version @typeinfo.minor_version end def ole_methods members = [] all_methods(@typeinfo) do |ti, oti, desc, docs, index| members << WIN32OLE_METHOD.new(self, ti, oti, desc, docs, index) nil end members end def ole_type case typekind when TypeInfo::TYPEKIND_ENUM then "Enum" when TypeInfo::TYPEKIND_RECORD then "Record" when TypeInfo::TYPEKIND_MODULE then "Module" when TypeInfo::TYPEKIND_INTERFACE then "Interface" when TypeInfo::TYPEKIND_DISPATCH then "Dispatch" when TypeInfo::TYPEKIND_COCLASS then "Class" when TypeInfo::TYPEKIND_ALIAS then "Alias" when TypeInfo::TYPEKIND_UNION then "Union" when TypeInfo::TYPEKIND_MAX then "Max" else nil end end def progid @typeinfo.progid end def src_type return nil if @typeinfo.typekind != TypeInfo::TYPEKIND_ALIAS typedesc_value @typeinfo.alias_vt end def to_s name end def variables variables = [] all_vars(@typeinfo) do |desc, name| variables << WIN32OLE_VARIABLE.new(self, desc, name) end variables end def visible? @typeinfo.flags & (TypeInfo::TYPEFLAG_FHIDDEN | TypeInfo::TYPEFLAG_FRESTRICTED) == 0 end def typekind @typeinfo.typekind end class << self # This is obsolete, but easy to emulate def typelibs WIN32OLE_TYPELIB.typelibs.collect {|t| t.name } end def progids array = [] Win32::Registry::HKEY_CLASSES_ROOT.open('CLSID') do |reg| reg.each_key do |clsid, wtime| reg.open(clsid) do |clsid_reg| clsid_reg.each_key do |key, wtime| name = nil if key == "ProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end if !name && key == "VersionIndependentProgID" clsid_reg.open(key) {|key_reg| name = key_reg.read(nil)[1] } end array << name if name end end end end array end def ole_classes(tlib) WIN32OLE_TYPELIB.ole_classes(tlib) end end include WIN32OLE::Utils end PK 0]S=$bwin32ole/win32ole_typelib.rbrequire 'win32/registry' class WIN32OLE_TYPELIB attr_reader :typelib attr_reader :name alias :to_s :name def initialize(*args) # TODO: Make this work internally and externally API w/ regards to inargs if args.length == 2 @typelib, @name = *args puts "NO TYPELIB! for #{@name} #{@version}" unless @typelib elsif args.length == 1 @name = args[0] @typelib = search_registry(@name) # TODO: Missing search_registry2 # puts "NAME IS #{@name}///#{@typelib}" end end def guid @typelib.guid end def minor_version @typelib.minor_version end def major_version @typelib.major_version end def ole_classes # MRI: ole_types_from_typelib ole_classes = [] find_all_typeinfo(@typelib) do |info, docs| ole_classes << WIN32OLE_TYPE.new(self, info, docs) end ole_classes end def version [minor_version, major_version].join('.') end def visible? flags = @typelib.flags flags != 0 && (flags & TypeLib::LIBFLAG_FRESTRICTED) == 0 && (flags & TypeLib::LIBFLAG_FHIDDEN) == 0 end def inspect name end class << self def ole_classes(typelib) new(typelib).ole_classes end def typelibs typelibs = [] typelib_registry_each_guid_version do |guid, version, reg| name = reg.read(nil)[1] || '' registry_subkey(reg, 'win32', 'win64') do |arch_reg, arch| type_lib = load_typelib(arch_reg, arch) # TODO: I think MRI figures out a few more typelibs than we do typelibs << WIN32OLE_TYPELIB.new(type_lib, name) if type_lib end end typelibs end include WIN32OLE::Utils end include WIN32OLE::Utils end PK 0]S=+win32ole/win32ole_variable.rbclass WIN32OLE_VARIABLE attr_reader :name def initialize(type, var_desc, name) @type, @var_desc, @name = type, var_desc, name end def ole_type @type.ole_type # MRI gets from vardesc, but why shouldn't this work? end def ole_type_detail # TODO: Fill in other details when they actually exist [@type.ole_type] end def value from_variant(@var_desc.constant) end def variable_kind variable_kind_string(varkind) end def varkind @var_desc.varkind end def inspect "#" end alias :to_s :name def visible? flags = @var_desc.flags flags & (VarDesc::VARFLAG_FHIDDEN | VarDesc::VARFLAG_FRESTRICTED | VarDesc::VARFLAG_FNONBROWSABLE) == 0 end include WIN32OLE::Utils end PK 0]S=Q \win32ole/win32ole_variant.rbclass WIN32OLE module VARIANT VT_I2 = 2 # Short VT_I4 = 3 # Int VT_R4 = 4 # Float VT_R8 = 5 # Double VT_CY = 6 # Currency VT_DATE = 7 # Date VT_BSTR = 8 # String VT_DISPATCH = 9 # Dispatch VT_ERROR = 10 # Error VT_BOOL = 11 # Boolean VT_VARIANT = 12 # Variant containing Variant VT_UNKNOWN = 13 # Unknown VT_DECIMAL = 14 # Decimal VT_I1 = 16 # Nothing in Jacob VT_UI1 = 17 # Byte VT_UI2 = 18 # Nothing in Jacob VT_UI4 = 19 # Nothing in Jacob VT_I8 = 20 # Not in MRI win32ole but in Jacob VT_UI8 = 21 # !Jacob VT_INT = 22 # Nothing in Jacob VT_UINT = 23 # Nothing in Jacob VT_VOID = 24 # !Jacob VT_HRESULT = 25 # !Jacob VT_PTR = 26 # Pointer VT_SAFEARRAY = 27 # !Jacob VT_CARRAY = 28 # !Jacob VT_USERDEFINED = 29 # !Jacob VT_LPSTR = 30 # !Jacob VT_LPWSTR = 31 # !Jacob VT_ARRAY = 8192 # Array VT_BYREF = 16384 # Reference VARIANTS = { VT_I2 => "I2", VT_I4 => "I4", VT_R4 => "R4", VT_R8 => "R8", VT_CY => "CY", VT_DATE => "DATE", VT_BSTR => "BSTR", VT_BOOL => "BOOL", VT_VARIANT => "VARIANT", VT_DECIMAL => "DECIMAL", VT_I1 => "I1", VT_UI1 => "UI1", VT_UI2 => "UI2", VT_UI4 => "UI4", VT_I8 => "I8", VT_UI8 => "UI8", VT_INT => "INT", VT_UINT => "UINT", VT_VOID => "VOID", VT_HRESULT => "HRESULT", VT_PTR => "PTR", VT_SAFEARRAY => "SAFEARRAY", VT_CARRAY => "CARRAY", VT_USERDEFINED => "USERDEFINED", VT_UNKNOWN => "UNKNOWN", VT_DISPATCH => "DISPATCH", VT_ERROR => "ERROR", VT_LPSTR => "LPSTR", VT_LPWSTR => "LPWSTR" } def variant_to_string(vt) VARIANTS[vt] end module_function :variant_to_string end end PK 0]S= AMETA-INF/PK /]S==+META-INF/MANIFEST.MFPK 0]S=Ajruby-win32ole/PK 0]S=Aorg/PK 0]S= A?org/jruby/PK 0]S=Agorg/jruby/ext/PK 0]S=Aorg/jruby/ext/win32ole/PK 0]S= Awin32ole/PK 0]S=P|jruby-win32ole.rbPK 0]S=??jruby-win32ole/version.rbPK 0]S=S60uorg/jruby/ext/win32ole/RubyInvocationProxy.classPK 0]S=N\+ org/jruby/ext/win32ole/RubyWIN32OLE$1.classPK 0]S=>'')org/jruby/ext/win32ole/RubyWIN32OLE.classPK 0]S= ** 9racob.jarPK 0]S=||cwin32ole/Win32oleService.classPK 0]S=eiwin32ole/utils.rbPK 0]S=!M.#?<?<jwin32ole/win32ole.jarPK 0]S= _S/?=win32ole/win32ole_error.rbPK 0]S=u63J=win32ole/win32ole_event.rbPK 0]S=HY =win32ole/win32ole_method.rbPK 0]S==win32ole/win32ole_param.rbPK 0]S=I}T 9=win32ole/win32ole_ruby.rbPK 0]S=d d =win32ole/win32ole_type.rbPK 0]S=$b=win32ole/win32ole_typelib.rbPK 0]S=+=win32ole/win32ole_variable.rbPK 0]S=Q \=win32ole/win32ole_variant.rbPK>