7  java/lang/Object()Vjava/util/ArrayList   org/freertr/user/userTesterOneshowsLjava/util/List;org/freertr/tab/tabGen   procsLorg/freertr/tab/tabGen;unnamed  testNameLjava/lang/String;   testResI"c $ %window'org/freertr/util/cmds) &+ ,'(Ljava/lang/String;Ljava/lang/String;)V . /0cmdLorg/freertr/util/cmds;2init 4 5stage 7 8 lineN :.;org/freertr/user/userTester &= >?pipeLorg/freertr/pipe/pipeSide; :A B parallel DEF GHorg/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide;Jorg/freertr/pipe/pipeProgress IL M(Lorg/freertr/pipe/pipeSide;)V O PQrdrLorg/freertr/pipe/pipeProgress; = :T Utemp W XpathZ [\makeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String; ^ _prefix :a b slot a :e fgconfigZ e :j kgunexit j :n ogwait n :r s reapply r :v w restart v :z {cfgarch z :~ chattyLorg/freertr/tab/tabIntMatcher; ~ : predelay :  postdelay : jvn : jvp [8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; jvm : oobase : others : remoteD : remoteALorg/freertr/addr/addrIP; : remoteL : remoteP : remoteS : persistP : persistD : persistC Lorg/freertr/user/userTesterPrc; : capture : %gZfailed:  qc pass: &  getOriginal()Ljava/lang/String; [9(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; fileName getRes [n(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; lineD  java/util/Listsize()I get(I)Ljava/lang/Object;java/lang/String   (I)Ljava/lang/Comparable;org/freertr/user/userTesterPrc stopNow  getLogName(I)Ljava/lang/String;  org/freertr/util/bitstxt2buf$(Ljava/lang/String;)Ljava/util/List; buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z  org/freertr/user/userFlashdelete(Ljava/lang/String;)Z     checkLogs(Ljava/util/List;)Z   tracesgenerating mdfile I debugRes(Ljava/lang/String;)VZ  add(Ljava/lang/Object;)Z## **Topology diagram**Z## **Configuration**  !nameZ$``` & ['9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; ) *+addAll(Ljava/util/Collection;)Z-## **Verification**/java/util/Collection 2 3 readConns 5 6conns8org/freertr/user/userTesterCon 7 7; < remP 7> ? locP A BCfind.(Ljava/lang/Comparable;)Ljava/lang/Comparable; E FCdel 7H IperP 7K LMperC Lorg/freertr/user/userTesterCon;Oorg/freertr/spf/spfCalcQsfdp -Tpng > net.png << EOFS graph net {Uinode [fontname=ubuntu,shape=none,labelloc=b,image="../misc/router.svg"] edge [fontname=ubuntu,shape=none] Z 7X Yifc [ [\\(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;^}`EOF c dequalsfsuccesshnot applicablejrun l mgetLin o pdoLine r f u vwdoChattyB(Lorg/freertr/user/userTesterPrc;Lorg/freertr/tab/tabIntMatcher;)Zy$ { |}indexOf(Ljava/lang/String;)I  length   substring(II)Ljava/lang/String;rem   startsWith  }str2num [:(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;  valueOf&(Ljava/lang/Object;)Ljava/lang/String; [^(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/String;perbp&&   toLowerCaseexecuteswcommandjava.net.serversocket.bindjava.net.bindexception exception tracebackterminal table raw  putLine  doSync;   getSummary'(Ljava/lang/String;Ljava/lang/String;)I  org/freertr/tab/tabIntMatchermatches(I)Z & word!commentcomments description &  getRemainingZexitoutputshow: config: addpersist ['(ILjava/lang/String;)Ljava/lang/String; I  debugStat  \ repairHwCfg&  C  str2lst  applyCfg(Ljava/util/List;)V addremote ['(Ljava/lang/String;I)Ljava/lang/String;Z  Y(Lorg/freertr/pipe/pipeProgress;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V  syncraddother controllerfeatureorg/freertr/user/userTesterImgftr   otherPZ  nothave  random(II)Ihworg/freertr/addr/addrMac    fromString  java/lang/Integer(I)Ljava/lang/Integer; " #otherC1 % &' convert2udpi(Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/String; )*+ ,-org/freertr/pipe/pipeShellexec9(Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/util/List; / 0otherC2 2 3otherC3 = 789 :;org/freertr/pipe/pipeSidesetTime(I)V = >otherS @ AotherW IC DEsetMax(J)V G HgetLine IJ KEsetCurr M Ntrim P  R S;putChar U VotherDX addrouter Z [;sleep]ln_extraanoextracwriteenowritegswcfginoswcfgkfancymnofancyotstampqnotstampstelnetunotelnetwsourceynosource{extcfg}noextcfgreplaceorg/freertr/user/userTesterRep + noreplace  clearnodelete [ [ [J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  :(Ljava/lang/String;ILjava/lang/String;I)Ljava/lang/String; Zlogging milliseconds!Zvrf definition tester exitserver telnet tester security protocol telnet vrf tester exec colorize header exec monitor  src  trg   replaceAll  set'(ILjava/lang/Object;)Ljava/lang/Object;  org/freertr/user/userFilter text2section"(Ljava/util/List;)Ljava/util/List;   getSection7(Ljava/util/List;Ljava/lang/String;ZZZ)Ljava/util/List;   section2text#(Ljava/util/List;Z)Ljava/util/List;%fn%%rn%s" [o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;#  (ILjava/lang/Object;)V java/io/File    exists()Z reload force  waitForterminal no monitorterminal length 0org/freertr/user/userTesterCap  rtr X$ [](Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;terminal table fancyterminal timestamps reload in 10yconfigure reapply5[  getPrc4(Ljava/lang/String;)Lorg/freertr/user/userTesterPrc;%Zsyncsendpcap&Zcharread   ping'Z   pingTest$(Lorg/freertr/user/userTesterPrc;Z)Zmpingtpingdping size 1111 repeat 1111org/freertr/addr/addrIP     isMulticast(Z)!90-100 # $% morePings5(Ljava/lang/String;Lorg/freertr/tab/tabIntMatcher;I)Z *( [)((ILjava/lang/String;I)Ljava/lang/String;+ , - getOutput Signature2Ljava/util/List;$Ljava/util/List;2Ljava/util/List;6Ljava/util/List;>;:Lorg/freertr/tab/tabGen;!(Lorg/freertr/user/userTester;I)VCodeLineNumberTable StackMapTablegetSuccgetFetgetCsvgetHtmstopAllsaveMddoTest'(Ljava/util/List;)Z SourceFileuserTesterOne.javaBootstrapMethodsDslotFHwJ#--L;;;N8P # Example: R![topology](/img/.png)T**:**V -sw.txtX.mdZ//\0  --  [weight=10] [taillabel=] [headlabel=]^.dot`127.0.0.1  127.0.0.1 b    df 127.0.0.1 htest: j/: configuring processl -hw.txtn telnet  p!r t - v  xfound  images for features ztest hwcfg tcp2vrf  |hwid tester-slot~tcp2vrf  tester 23port    -  - : hostname logging file debug  router - hw.txt packet capture  log--.pcapcmd:packet capture 100 1   delay 11cmd:$/: test failed: too much traffic /: output .  [$java/lang/invoke/StringConcatFactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup! %>?PQb X_fgkgogs w {   ./ .0.0 .1.2.3 % /05.08 45$P**Y *Y***!#*&Y((*-*13*6+9?#@%B7 <5a<*V*M,,N-,W,W*--,W*Y ` 62 I JKL&M1N:OBPERPSZI`U7B=5  *NY L+*W+(W+W+(W+*ҺW+(W+W=*]*N+(W+-"W+#W+*]*c-%(W+#W* +(W+,W=* :+(W+#W+* .(W+#W+*V*Һ0WY L=**1=**N6-4-47:7Y9:7Y9::===6*g*: - J 4@7:   4@7:   4 DW G J J*+PW+RW+TW=*x*N+-VW6-4G-47:G(+-GWJWZW+]W+_W+*V*ҺaW6"H[ \]"^+_5`>aNbWcadnezfghijdlmnpqr st'p-v@wHxUycxi{v|}~!(/28}>{DNXbo{ 7cdCB  777""7 )$7$5s3=*"*N+-b-*6 $&,17 #f5@**e3*&Y((*-6 5@**g3*&Y((*-6 >,5**,*+,*i3**kM,*&Y(,*-*n**q*s3>* ***t*q6V '(-14BIPTU\i7  !\5[+xz=M+`+~N+L-xz=-`-~:-N-\--~=*%*cdh`h`=+``L*`=+**Lb-R--~=*%*cdh`h`=+``L"h*`=+`L --~dh=*cdh``=--~d-~N-b-b+L +L+6$ "*7>HU\l{~    ( 25?LVY7 n"?:   5f+=+U+N-z-z(-z-z-z6B !#$ %*&,(6)9+C,F.P/R1\2^#d57# .?vw5g++++>** 6@A BC!D#F)G7#p5F*-L+~+ƶ+ȶb+ʶb*kL++ƶb+̶b**-ε*N*+Ҷb*l*q+ԶbMNY :*kL+}+ƶbp+,++,~+~L* +.(W+-,+-~+~L*]*c+%(W+W}*-θW+ڶb**q*-MY N*N*c,*kL+!+ƶb*+L-+W-*]*c,W*,**W(*WY N*kL++ƶb-+W-*]*c,%W***-+b**q*-MY N*kL+!+ƶb*+L-+W**L-+W-*]*c,WY*N*]*c,+:**W(WY N*kL++ƶb-+W-*]*c,%W*-+b-**qMNu1*cdh`*`6*-:(:*-L+~v+bVY*N*]*c*-M,*,@M*-N-*-úN-*-úN+b*-:Y :6*o*: *&Y*-6 *-L+~!  + z6    W*N * :Y : *kL+"+ƶb*+L +WػY : Y : Y : 6     :*&Y*-*-:*-:*-:Y:*-öW W*-W *-øW*-W *-øW ^,,- ,!*]*c   $(W.*]*c   $(W1*]*c   $L +W *]*cWY*N*]*c+:  456 <* W( WY : *kL++ƶb +W *]*c%W??~6*NB67 F:*NIL:?O   Q T  +Wb* *Y*-M>66666: : Y : Y : *-L+~6*kL++ƶb*&Y\+*-+^b 6+`b 6+bb>+db>+fb 6r+hb 6b+jb 6R+lb 6B+nb 62+pb 6"+rb 6+tb 6+vb*-: +xb : +zb*-: +|b : +~b)*-LY+*-÷:   W+b  r+bD*-L*&Y\(*- *-LY+(:   W'+b Y : *kL+"+ƶb*+L +W *cW **cdh`*`W*cdh`626*h`6 ```W *]*c,WY :  (W (W (W *,*W *]*c,WY :  ,W W *]*c,W[ W W W W W W W W*kL++ƶb +W )*| : *  (W6 S :6 0 L+L +Wʄ D :6 & ::: 66 ' L*+L +W*L+*ҶL+,L(: :+*#*]*c,L + L +  *]*c,%WY ҶԚ   WY*N*]*c,+:(WA6*x5bضڻY*N*]*c,+:*Wݶ߶6*ùE*:,b *]*c,   b*p6*t*h ض* *Y+b**-ε3+b*-ø==Y*+M,*-˺,W*-L+b,+b,*-ζ+b,*-κ+b,*-øQ+b,FL++*-ζz+sbYN-*-öW*,-tW+b$*&Y(*-κ *-*, W+b *, W+b *, W+b *-N*-:**-ö:*-::Y:*-öW :W,,,-6 6  vY:   W ",,-6   *  d6  6  &*N*c, '߄ * +Զb=*-L*N*c,+*,++N- ** -W*6NOPRSU&V'X1Z6[:\=^G_JbKdUe`fpgqi{jkmnpqrsuvwyz|}~)78BIMNV^otx{&'18<=EMRVYcflw#,23=JNOQShqu}%58@HKinq{     ) 9!B"K#T$]%j&t'|()*,-.012<3J4`5x6789:<=>@ACEFGIJLMNO!P+Q0R1T8UEVHNNYUZ_[f\g^q_x`bcdefghijklnopqstuwxz{}~ ",.1;>AKNQ[^aknq{~    * - 7 > A K P X k s                   & @ U ^ h r |             ) 4 ? D H K U X d i y ~                + 1 9 >! M" Z# `$ k! q' v( ) * + , . / 0 2 3 4 6 7 : ; '< += 7> ?? G@ LA c= iD sE {F G H I J L G N O Q R T U WX Y[\'[-^4_<aCbJdKfUg`hajkkvl{m}oprstvwxyz|}~),-7?KRS]v}~#'09BK_`dmu{|77 % /0   A ' s #% \ 0V   $     0   /) j  8./'#*-:,    / %*-4-,   7  5PYN-*-öW*-ø6+*--"W+*--"*6*  $35FHN7 5@AB ,CEGIKMOQSUWY[]_acegikmoqsuwy{}