com.ibm.wbi
Class Proxy

com.ibm.wbi.Proxy
All Implemented Interfaces:
java.util.EventListener, java.beans.PropertyChangeListener

public class Proxy
implements java.beans.PropertyChangeListener

The main component of the pluggable transforming proxy framework. This component connects and manages all components and Sublayers.


Field Summary
static java.lang.String COPYRIGHT
          The IBM copyright information.
static int ERROR
          Indicates an error return code.
static java.lang.String HOME_PROPERTY
           
static int NOERROR
          Indicates a no error return code.
static java.lang.String PRODUCT
           
static java.lang.String RELEASE
           
protected static com.ibm.wbi.TransactionTracingHandler tracingHandler
          Reference to the transaction tracing handler.
static java.lang.String VERSION
           
 
Constructor Summary
Proxy()
          Construct a new pluggable transforming proxy.
 
Method Summary
 void abort()
          Abort abruptly shuts down the proxy without gracefully cleaning up.
 void addPlugin(Plugin plugin, java.util.Properties attributes, boolean enabled)
          Transiently adds a Plugin to this instance of the Proxy (this does not install the Plugin into the configuration store).
 void deregisterAllSublayers()
          Deregister all registered sublayers (and all their associated components).
 void deregisterSublayer(com.ibm.wbi.Sublayer sublayer)
          Deregister a Sublayer (and all it's associated components).
static java.lang.String getInstallPath()
          Get the system install path.
static java.util.Enumeration getInstances()
          Determine the list of running Proxies in the current virtual machine.
static java.lang.String getNativePath()
           Get the path for the native code.
static Proxy getNewestInstance()
          Determine the newest instance of Proxy that has been created.
 Plugin getPlugin(java.lang.String installname)
          Get the plugin by its install name
 Plugin[] getPlugins()
          Get an array of Plugins currently registered in the Proxy.
 com.ibm.wbi.RequestDescriptor[] getRequests()
          Get an array of descriptors that can be used to inquire about the requests currently being serviced by the Proxy.
 com.ibm.wbi.Sublayer getSublayer(java.lang.Integer identity)
          Get the Sublayer that produces the the specified identity.
 java.lang.Integer[] getSublayerIdentities()
          Get an array of all registered Sublayer identities.
 com.ibm.wbi.Sublayer[] getSublayers()
          Get an array of registered Sublayers.
static SystemContext getSystemContext()
          Get the SystemContext.
static com.ibm.wbi.TransactionTracingHandler getTransactionTracingHandler()
          Get a reference to the tracing handler.
 boolean initialize(SystemContext context)
          Initialize the proxy loading the Sublayers and registered Plugins.
 boolean initialize(SystemContext context, boolean loadSublayers, boolean loadPlugins)
          Initialize the proxy for receiving requests.
 void installPlugin(com.ibm.wbi.PluginDescriptor pd)
          Install a Plugin as specified by the descriptor
 void installPluginFromRegistryFile(java.lang.String registryFile)
          Install a Plugin as specified in the Registry File.
protected  void loadSublayersFromConfigurationStore()
          Loads the sublayers that are specified in the configuration store.
 void propertyChange(java.beans.PropertyChangeEvent e)
           
 void registerSublayer(com.ibm.wbi.Sublayer sublayer)
          Register the specified Sublayer (and all it's associate components).
 void reloadPlugins()
          Reload the plugins, this re-builds the condition trees on the MEGs.
 void removePlugin(Plugin plugin)
          Transiently removes a Plugin from this instance of the Proxy (this does not uninstall the Plugin from the configuration store).
 boolean restart()
          Restart the transproxy without waiting for pending requests.
 boolean restart(int timeout)
          Restart the transproxy waiting for pending requests for the specified time.
 boolean restart(int timeout, boolean loadSublayers, boolean loadPlugins)
          Restart the transproxy waiting for pending requests for the specified time.
 void resume()
          Resume the registered Sublayers to accepting requests.
protected  void startSublayers()
&n,zWwO(O}T(/tXbG;dzXRs^Jyw pud&df;)9NI[p1[:+SƠ3&u*k=ͯXhb.RSfZ{bWO֞GEb =Pd1(Fol!CPԡpZ=iꯢŬc]8N*焜xwU߳շv 8޽msں7-G%88 R~*9o-.")Ox".9A!k2ьsXaxCqM&74+yO6Pc% $)ca}I4nPzbZz̨1 q%<<8~X?B1i cf+-`z}t3@ Q&rG)|g/]M.8`![/( CФSCx΅}E` mvTv7l۳s܋=2kD:BsޠeORrioϛBȐmʘē2Ta<@7r37$ qv'L1/B[{7+0}Ƕcl5bAgS Npr8.BuQ?*#{R*jGlG FP 8\lT|6;7'(<CfƎSCz i6w^}^mϞRƲ䌹iPWgc=BI,*u BYlT*t, bi+,W!T!?60֧w?w̧Ԝ Tr jd m91Im*qzR;HmBZE'"v0M>4ld{}۞miSa*W߂2e²sow~{M!iz$"zL.$Ȝ$d~0FK”IY o3HIחgF/Y-UlTfknj&e9Fy! 7a<@ʱcBr.#F0\pl!i~}GҾ]r}ḿ17oףm7Z⚔+]YIBZcC 1|f#kL`,9a֎ QݻhܹԖHhX1ţҧGOK1̜gOH =Z_+)]4żkzR(mT触MR rO|[ѧYo/yWAU)qUTdԔэ1iIcc]n@7!iICC\.g+%,\myU(Bsw%3 }c߆? endstream endobj 76 0 obj << /Filter /FlateDecode /Length 13331 /Length1 28672 >> stream H\U tg~{#Fbqh,AlM"F؎Db A LcR:C-6NsN-ŔiCab2sJ*'Wϴ=9~AH. :$37#o'?$?sv#.~~&~ۅcW&N;!eGq@@HZNvFVŌnCi6= AF@g#+Sgf`uMw@Σr3 OcZFnY@yy+o|ϛ7xXh1V \E3şX*oܜwUh-GJp cpH!h%=1PS '"H7Reo% %C 1,X2 <ģ-IuÐj@o$/N-[8˰0 ʹW1ڏ1 d0 [pwm9nV:aI<$sqn޴oF40@˟ {T)#2I8UhvYlEzO0SSHMjZ}iU_[`o_52ڈVb_R+ EDq>_Po띪0\dr|rlVjȇku:6P{ˌr\ܪn**fc^&:1fcnHB`: ،lAtY؋gX-C<FtM?g Um2:YdgeDc0$FZ^.Zb#g=AQF%s]7KJ`:C|=U<2VYpVZ3mW!],}pԃxO%r1~8{m02 .$K;Ek9s2Hq(u>dY,*҅Tm6͏=Q3 صC2ok'@|æ)ȁ~(frb%i;ߐsx,2Gq>~31볰Dvs% -ўqz&y_-ϖgu#sX>\Q[\^&~eo>K|]G\:k#-Ӽ# Q!VHc| h@?j,C۟JeqӻWbv)Qڷl&":Ѫe͚6 iRP ׫_n3 QngR&cq&'w;3tKI8}jjSsiƿЌ:O(u9d԰4W#jxo\8,#'ivN;Es':;Fa]r q풐W7P!^4qjxt;#˓:,j6WilT>o7c:౉Yl0ƞ1x e ȌK,-N jζQSiA[e{nwxf$z8՚ճ5úy1jX k`W7juЬc7P,jJ'S%η%P͚L T;⸚lä}9ʮ֍ho ڪr#iߋЀ/#؁iv;5%i-1[ MJQ0D8S)RJFG)'&aىnE↯;70hfn ~us3Mcu_ǹ*a&8s0V<,LJ' Pppxl1X']Xy{~ %Oz`m٘Y^-0[G2H9Sd*5VgTH"Ze9RɄ&K5HyVIwʱHʙT5joj+]Jm:D a OGazS/3uDH.| *'BNX2Rm|ukogPZ 莄~#i˷ly 2Npms4P A68Sl~r)dĮ-3b/f7s~98gDOO o<|sz.BuPNkڣ[{2WrWoLTsߩ^4i\w*PuTOm&[wcI%jl!{^ k++P61j׉Sey8]څ"u*ԖvJ% ~~Om]nBJ~l%_.QK(#WٴBR٠R5 f=*U~ G [L*Ƽ?!}1bhMe*uGX ^ɾ:_wRnqx ^W1%( /!ct8-t@z:/ឤ6~KBR/Pt `8 \nc*U`)W[*xPfOPCYw?E .36 փW7aބk=>B͟A#-1L |/gW7z oCM.Ik;I>exB] ^pʃJ)h?pn}=P^x`bo5ͫ q>IڴK/g]&%kJ^FMHljcDM(h!HjiaA 6 ՔBJֱ%,%<2!t?z}y!]3`5a.۸CBPW!݄є>X[;(7n򯗘u)VW=;ė <'wșߔ>K.|M|m['#pUurխ.^! ܈r8!SЯ]_!<xu eo2y%7 g z>/~doێ=WNl3|3q>8?@.GNyee,,wS%W;wyH#y伲qd*ɗ p596J7=81AIB6$؍;8}qb EelLޭ1o5F~1s-o >O"7*f;,fKsU;7b7Kv.O?{|[9ݭj[Cw\8el{eGe̻lbxKubc'~#YM_@.( ;qK{32y=2?W!L=xO%a૓{'~7";_C_c331y{iHٸna&W(ˌB/4zmu;*"V(+W+Xe E qFlZY+)EMe)ny`4~rfï F\!t$0H `p?$CVx8I$U HLvpvC"\V,|12"~s'DS|r{8 ?;pt~?F(•紨B~T.__#5{{߱N9wg/x]<˷ IrhF"RēI,9ROII.2\S==# %YHE+~+~YtA"Kn<<|0i[3,.jޅO!uAGVRQ(߉`(J.9T\FC/@b6>M>h͛o'_IX",ݷ{;8\.ݿI[5)G%4BI8nqN3A ӆeE*r5-MZZh7ɥ"mMMQ,ҷ7Uo9|]<9Q7lFOk4vhnV9@վ@@G,!QPQM.w 1FOc"JĬeyx.b 1%*#+1T*qq'H|Vf9>OYP*ۑPTD Q"e)Ykdj&$+:WˆNW&W2H'96 MSh=/,7|%)i[9+/הNu9n;ϼ4v3& 2}1?g>3y[)DPXci[❮0(&hP1jULXGY=#\}֑P&zDW46ՅTӹ??J?vz6Պ>kDygܣ}8a0 #ؚh) dvHPl=y6Fӵo/XY%uPtr)/|k4Mp:@Q=E@#a`j+ ˯++vjwәǩJO <TPCkB4~~ͣN}gЪˡ@1`G\dX"osHϡےǢмKoh]*u`!`߀v[7ǗO!$Cr%?3G<oZzj r< 8rg'N}c=k%Z>MTȇx^NG wxCK}q}O> endobj 74 0 obj << /N 3 /Alternate /DeviceRGB /Length 2575 /Filter /FlateDecode >> stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 N')].uJr  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km endstream endobj 75 0 obj << /Filter /FlateDecode /Length 6227 /Length1 20964 >> stream HW{PT|n&*($R]G1V]](J4Zj&Nck}$F6a,Zk5ڙfhsd&w8;;wH |4{JhW@bzWՇi 7vҼukƚ-=3 __Ұ>O3@B,OPL<95C19t (eLk4^!ڣQUU!cٓh56쓦2>󵕡 rҰ5̛ς 1ްbbq`X>ad MF9@>h|P 'Gсx:@~+>MڨmH ~wq^akAR4􂴓+"yf3(r[!GVץ\P`?]S"},}5vN|p[nV}*lw M0[q۰b0bJ!:ߛHsx vUJ)J*n"Oc8ɬMVp+u;qв壜kdu)TJ/II>\E9? x W>#NƠ;=ӦN<){ℬ>Ęnm:dԯ 蟒/)1*,3]n;0?l-&=dtOX8 u4ȄEJ;A:ݻQ;5w3NZ;=5NNBs’iRd7/,#i,3-Ӕx̂ +q$HWk!0,G5L־2 dE guNT3Wա\9֖>zrqE ][^ĨGoww4J90Ӝ7\s)7c&LخKG;d0aësA.+d)5 ։=B"OofXZ9XS<2 oUFWe@Y*+ .{GTk$XpG]"W㞠DsUi&uN_50r-|e:8u͸S aO$qށP}/h>]A#i5no.3=nLgVc| \ f"Rrͱ2[c./2Q)DU[4̦P:LGPtF/#MxxP.oCl&=KuIҐ3\7=~%Rɛoͤ>6!Mgws Jr5,zJHu=TkWIXcy[:VqNwr4mFHU{{1S֥p\ZpgJs,ɞ`a >5+| &IzROߐuTĽIKn:)9Xjc2ʼn\8Cy7PNyJIܠJ!b,XDT"#_mb5E\VΡ>чݑЦBG=&" mo^6)O}m'hKo9@̖aZ<DU=8CHRF:+FY:y 4+a̤`܊El9XzkB;_c䫌u`5qn&F*w,te'&+d4J6n-jd/rzssj.F"9J<`^Kr5 ^T~l3*4'ijd,W+_8D<gzj y;[WeUna5ȱɬŏq<<=+;Sٓ=XJ` 듵y*"=H"wKf| k(z.]Ys_""kfmeb^%>{1)=b<1OsAk^!~D$ggD(ݔ)F<37? EEm̃cM'=hO޴!~\36eq&&佸VWwϱ3D_5RB**8+. >;a˜x>T~Ř".S;)m`>\[9|e'Ta 7FnaSq|5lvpءtcx{ȗ뜠lo &c}A YI, ·Y(+|n!),HAB+t(a W 1P򆑭TҁH (]-vHim4CqJJ)P$we8;ߞ$65[Vāo?3@od4,v΁yTb} {Ewr*5o& 2k{7q˩^[ϻs%ǘB*2/Cw:3QA!|M1^f%t_׹ݸrcu7dؓs`9ƷN%p~v5Tcbn%t=@\-5L (|1md~H+` SW{ l`k+!ngir'Zgb (l6b KkW^cV"?%b{yяO#sFw#%⚭#v^u?~59{*=V1= y>N9Jy #ʌguQuݐ:Y_9_Zx!iH!GΥ|69){ߤ p44Rpr$, A@l2`&x jN+!͑Xŀ=Ցj3lx _߱xĹjoV9+ҋoDL+_+ _Z*QܴBx42vثss[]4T=2~jم}~5wԂJJ.oƋWR] vsApldRpʀWR( %c$Kz%=)FAՎT'OY~e8ƖDEҒlb{22h~( XjlѬ?' /=^R *bJUT0)Ĩg*bLG.2(&#)L>RJcn^ ɴDd8`첏m=w%wל9|v^8\vm(Z^.ZKJZ6ZS[hh$(ka d ?TBe3Hlu=thQws~ |WaP.L vd> Ra@/P,T #ھVRC C&@ DҥvokYݫEZI3%OOJTڎ ;\g4M*ԙHhoZG%v$ k;2=A:#w )Q̔ qADDK|j*" "Gv|8oѻ.7:w='ujvjy ] жj,~Y#"~-Sr^Nqԁa9[x&Ržnx)gxi}%⾱7)eM[د(Q,dr[|0^ R>1S1(삙YIQ]ӬSjd~Cc};>!=|L>—!A]--K"8 >h5SV I4v箟x?)z#Y<ŧ>N>Uvᝏ/C{:ļTnfXUs F-"X=L~讎!j"ƎIg)o6z9IT"*L![.iɝ5]^vbz21LxvmnD#zpxQĬpUL EX/~ k5\bO0EiP/=c϶mOh;f۞/:o]M]}c#=݇:y&m`"g[`eGLFiz^ kB[s/{޽ft z܎h|*NKZ/oz{f6KDg*8Tf|E aC; &IyS]FQg^u{:tZGrzDMAȇ: f$GM0FFJj #:0ԫC\sqG6Pe외XWg)e#ܨ|.$Wo=W =̡.Y:4-ej[uE7,+)"P!9UDF$>l"CC߉?1҂3Ɖ?aȜ587 8Jf 5h, 0 *>$1Xn]6Gi}G ll̎HbG2;c2ef'Cʡd4̩;ٗ˜$ӖײWo 0I65_x)@`NY*g&jLB~NNF)M0v]Fh1O>HuKпCLHGCmsD3*w%ܞqa7W`zo@s9SpBGfka zmR3X:k9VBB L=PD9,燪XP?;rjSDԅ;,~X0$O~ ޒӉ~\]S|ׁ4\*!i>SS֐WkZH5F>ij$ /:Jvˆ9iΙv^j' ϹRiZÉ6{.ߝt͹h@`D(}$5%LIB(iZƺg&TgjiCFIobΉ6mYA3H*Gلi[Rr{2.!Vw!WQ"8PNH9ds2(Ch^_iJ !.kC/[|fnNLe"<3q SW5BZѡnٓL C]UF܎nb{o>`yKIzZ^&ޤ t=u^<%ocwF#$Ĩ›^|܌ q#b78:Ьq щ8#UTCWPYRhWJ%@0Pfڏ߷zcUQtɳpЙng6v<FƹMETZ5W`ZD1Sxӏs6*&jm#+sgyP{og9iQql C9C+J&N^pp=tnF:~>+f'VȪry=x=Y)};gnn8 ǜ$}iFFlN ,E$<|1y+4ca%әTTFPWPxy1t6}r ؍ jN~TF4j,5_j#&o0 $9P)EɤGI&oRyF/kmfG--K HGIpMѸ8!NFkm~NFݴiudQScogr>NF-} mY@]6-K]Ʌ;PJ~x}|9 &=;z |sފ,)[g|Йc @;_/LmqqҠFhWò5,^JhyUTMT|,wQaO\*w{v~I `>ǽ DN':saMHM9FÈ,W(ڂxYLs^‚^2)?HsX 57'\h,HKb>y 14F#iyZmt+Nh_`_p,0i֘hD .l`o M#_7yh۔FkY*8̈́"JzSSc)6'Xe+Dqrxs}O>) /m๶?Y?{2vb2zxW9̌ef9Mev rK}=d%zsciu)^xY!-;!'S;%] å" wQ5v`,A e}0kwJyD@,à " 3YyS+!~=Es=ɸNZ -` =l*,y3$ ovﲼ3/ӬvK6<%OxAHZXh AmzUt#()nBw^e0t7QTQo#] vWj@h(I6x l<@1L,e7]]!65C'\U搘ۡ_?:ޅG_y}9z3&X&޶Dՙ͟Q0Z.F82_ ͂F3{ܿ?RF(aes&q$NG >?Yo$gBtlΒt|VN4P@{gV0 =R|Rf閱s-U-v7Fa'4Su9wF?c5`/rsvIݸb.ni#c!ʯ7X؍B7ٍݍt72SGI4IOxZ~W>ⶰC暿-$1OhufX٥ѪNi%(p ^9[r|x02 y=$l|.hm4#-~#q&T_e/{ӟ7 (+*C޷'qvSK*-]jsR 5Sݷpա$.TXym8uք`W]9u[HR]A‡{`PG~M[{ r`@jhHXLj2 YQMF|PrvΖѹ]ܺ !T ckW k~ys:҃k>:D<ĉB6;n.K %x{N,NK.CƕU=̙̮ݹyvgcfJƭR $uDHSaj!KBŋ+E4C.XdBD#U-TDE;gnS3:?}XUbB{2w]vG0sR!{n#'¯'@n-l uBAJpJX:Yn;u5s>nE6SLA a~_G y2FѲ[YYgJ qjV_<#ΨLX*ih,FQcS}Ƙ~LNVUrM@@a婞ݛ Bkk4XS)txHӥeFi5qZ Fك$>)0!PE! b@ss eỊ##i̴OLqXIBʼnK<>YG|$$HX : Iw>٥uK.mlF])HKmHZ.%'4fhp$W~1cAE HEnrE{zh E 3#*'5P[3}80 KT5'tƶ ,op xfiuq3|SݪrJ9Ν\G,P+d=.va՝>Oۭؑ4el=ēdjR|siAzx |%Bbphpxd?{56P exSh|wmd[jCBE!gee8fۮKgnM*`SLFɅ#:FQo*ٔ- 4Nc9K@iJbYNz0&jЊL妒h6HJD؈X9P#uʽfv3]u6-HMR!ЋYtl 4@Rܙ;xCN{wE3kOp{bi%fA@Nqjw 8' 2눅\܅_!&Ie7e+Q1Nj]ZEZ#D@4tm($?^wj.E@H`L ׁdE…x7]ɐ:~EƼ#@xI nTtNI:`1La$)d< |~>w!_DqϦ~R)1YlȨjĖAR8؞][TZ޺b]XU^Ѷjuzh_}@LT[}.-I[Yrjk\NDuArO"{+{L fuj5e1HĈ&1 ~S ̀ fo֮l sżk_lRSX&+5T@W3DNQB:xypJsxozW{,gd&͚ʖjV?H?9Zy9ŝOyr;-I4s4+L}!U Ӄ\N/d ͆8Q6$F#o%'7D1-mn <˽ r.= 01/k /dWJ"goK5>_^׹tG}LkfNDo"8׀$:q&$BsѹЕ='x"5F=Ï%دئ+{v~v~8v⏐bW(`'bRHN]WetЉU@붖ҩ -b ijmg.J7y^{=sP">//ĢUNrp"+hL 5̷5LfDM9"]dֈ[DVtLP5"n-t^S47 F^E8,/2&A2_{4&j6i-kDF2A <ۮqL+cffż̙K#R-q)ll˰.t4w$ooKܾ!B#CYrw2 tw{;g%MiW6c(Dl2=Ey.JW L5E\u^[*쨵wUƨX1˾&~6hRD\pr#WVS,A x\ wZK|@a ܰP?|\Uհ`ɻUuAv\\-*8PV_P&T**Vѭ&YhzA,-#"32'_)WdW;/YmG ~ƞs 7yne=O%|.D}r5aNopmyߐ3K#Jg8TFV)dYtQ~,WR 3wͧ]KZ PW!7|Ǘ*b67-lEwJ~'P+6QX1BE(H~QTDwpoG8Am_+c{WbR"=AI$:tŠɅw&acbAo6Yk4޴]RFQۖ1{4kfV.:wuVW23?tëdjp_ɼ56cAtQ3q)JEq\c0jVl\KhuY /޿!J9؇S6 :cI\ ]LxڹvAvX=es+B:De VOk>9͟NU\sVj~\|󾭟y a3p YaԐQ31Px‚+K3CiOS0BXJPpqTj@gՕ3lpaDI{U jK^O '1IT >H=MQ~"Zԡ5G kTHJE'x~bh8it\:/y {/I|L,ʕzsH^[)dK*tżв6-3