7  java/time/Clock systemUTC()Ljava/time/Clock;    net/luminis/quic/send/SenderImpl(Ljava/time/Clock;Lnet/luminis/quic/VersionHolder;ILjava/net/DatagramSocket;Ljava/net/InetSocketAddress;Lnet/luminis/quic/QuicConnectionImpl;Ljava/lang/Integer;Lnet/luminis/quic/log/Logger;)V  java/lang/Object()V   net/luminis/quic/EncryptionLevelvalues%()[Lnet/luminis/quic/EncryptionLevel;&net/luminis/quic/send/SendRequestQueue  sendRequestQueue)[Lnet/luminis/quic/send/SendRequestQueue;  ! "net/luminis/quic/PnSpace()[Lnet/luminis/quic/PnSpace; $ %&discardedSpaces[Z ( )* conditionLjava/lang/Object;,)java/util/concurrent/atomic/AtomicInteger + / 01subsequentZeroDelays+Ljava/util/concurrent/atomic/AtomicInteger; 3 45lastDelayWasZeroZ 7 89antiAmplificationLimitI ; <=clockLjava/time/Clock; ? @9 maxPacketSize B CDsocketLjava/net/DatagramSocket; F GH peerAddressLjava/net/InetSocketAddress; J KL connection%Lnet/luminis/quic/QuicConnectionImpl; N OPlogLnet/luminis/quic/log/Logger; RST UVnet/luminis/quic/log/LoggergetQLog()Lnet/luminis/quic/qlog/QLog; X YZqlogLnet/luminis/quic/qlog/QLog; \]^ _`java/util/Arraysstream.([Ljava/lang/Object;)Ljava/util/stream/Stream;b cdacceptR(Lnet/luminis/quic/send/SenderImpl;Ljava/time/Clock;)Ljava/util/function/Consumer; fgh ijjava/util/stream/StreamforEach (Ljava/util/function/Consumer;)Vl#net/luminis/quic/GlobalAckGenerator kn o!(Lnet/luminis/quic/send/Sender;)V q rsglobalAckGenerator%Lnet/luminis/quic/GlobalAckGenerator;u+net/luminis/quic/send/GlobalPacketAssembler tw xq(Lnet/luminis/quic/VersionHolder;[Lnet/luminis/quic/send/SendRequestQueue;Lnet/luminis/quic/GlobalAckGenerator;)V z {|packetAssembler-Lnet/luminis/quic/send/GlobalPacketAssembler;~/net/luminis/quic/cc/NewRenoCongestionController } T(Lnet/luminis/quic/log/Logger;Lnet/luminis/quic/cc/CongestionControlEventListener;)V  congestionController*Lnet/luminis/quic/cc/CongestionController;&net/luminis/quic/recovery/RttEstimator  (Lnet/luminis/quic/log/Logger;)V  java/lang/IntegerintValue()I !(Lnet/luminis/quic/log/Logger;I)V   rttEstimater(Lnet/luminis/quic/recovery/RttEstimator;)net/luminis/quic/recovery/RecoveryManager  #net/luminis/quic/QuicConnectionImplgetRole()Lnet/luminis/quic/Role; (Lnet/luminis/quic/Role;Lnet/luminis/quic/recovery/RttEstimator;Lnet/luminis/quic/cc/CongestionController;Lnet/luminis/quic/send/Sender;Lnet/luminis/quic/log/Logger;)V  recoveryManager+Lnet/luminis/quic/recovery/RecoveryManager; addHandshakeStateListener.(Lnet/luminis/quic/recovery/RecoveryManager;)V addAckFrameReceivedListener+(Lnet/luminis/quic/FrameReceivedListener;)V  getIdleTimer()Lnet/luminis/quic/IdleTimer;   idleTimerLnet/luminis/quic/IdleTimer;java/lang/Thread run8(Lnet/luminis/quic/send/SenderImpl;)Ljava/lang/Runnable; sender-loop )(Ljava/lang/Runnable;Ljava/lang/String;)V   senderThreadLjava/lang/Thread;  setDaemon(Z)V  connectionSecrets+Lnet/luminis/quic/crypto/ConnectionSecrets; start  ordinal c()Ljava/util/function/Consumer;   addRequestB(Lnet/luminis/quic/frame/QuicFrame;Ljava/util/function/Consumer;)V  >(Ljava/util/function/Function;ILjava/util/function/Consumer;)Vnet/luminis/quic/send/SendItem '(Lnet/luminis/quic/packet/QuicPacket;)V  java/util/Listof$(Ljava/lang/Object;)Ljava/util/List;  send(Ljava/util/List;)Vjava/io/IOException makeConcatWithConstants9(Lnet/luminis/quic/packet/RetryPacket;)Ljava/lang/String; R error(Ljava/lang/String;)V t setInitialToken([B)V  relatedEncryptionLevel$()Lnet/luminis/quic/EncryptionLevel;   addAckRequest(I)V  relatedPnSpace()Lnet/luminis/quic/PnSpace;    addProbeRequest   wakeUpSenderLoop .(Lnet/luminis/quic/PnSpace;)Ljava/lang/String; R warn   t stop(Lnet/luminis/quic/PnSpace;)V   stopRecovery @(Lnet/luminis/quic/PnSpace;Ljava/lang/String;)Ljava/lang/String; R! "recovery k$ %discard (  * +5stopped - .5$assertionsDisabled0java/lang/AssertionError / 3 45 shutdownHookLjava/lang/Runnable; 7 85stopping : ; interrupt = >5running @ AdoLoopIterationCjava/lang/ThrowableE$Sender thread aborted with exception RG H*(Ljava/lang/String;Ljava/lang/Throwable;)V J KLabortConnection(Ljava/lang/Throwable;)VN O)(Ljava/lang/Throwable;)Ljava/lang/String; QRS java/lang/Runnable U V5 signalled X YZdetermineMaximumWaitTime()J \ ]^wait(J)V`java/lang/InterruptedExceptionb c(Z)Ljava/lang/String; Re fdebug h i sendIfAny k lmassemblePacket()Ljava/util/List; o pqisEmpty()Z s tnotify tv wxnextDelayedSendTime()Ljava/util/Optional; z{| }qjava/util/Optional isPresent  instant()Ljava/time/Instant; z get()Ljava/lang/Object;java/time/temporal/Temporal  java/time/DurationbetweenP(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration;  ZtoMillis  java/lang/Longmax(JJ)J + set + incrementAndGet  (I)Ljava/lang/String;@  java/nio/ByteBufferwrap([B)Ljava/nio/ByteBuffer;  _()Ljava/util/stream/Stream;  apply()Ljava/util/function/Function; f map8(Ljava/util/function/Function;)Ljava/util/stream/Stream;  cV(Lnet/luminis/quic/send/SenderImpl;Ljava/nio/ByteBuffer;)Ljava/util/function/Consumer; java/nio/BufferOverflowException  $(Ljava/util/List;)Ljava/lang/String;java/net/DatagramPacket  position  java/net/InetSocketAddress getAddress()Ljava/net/InetAddress;  getPort  ([BILjava/net/InetAddress;I)V  java/net/DatagramSocket(Ljava/net/DatagramPacket;)V  9 datagramsSent   packetsSentJ  size   bytesSent  cT(Lnet/luminis/quic/send/SenderImpl;Ljava/time/Instant;)Ljava/util/function/Consumer;  java/util/stream/CollectorstoList()Ljava/util/stream/Collector; f collect0(Ljava/util/stream/Collector;)Ljava/lang/Object; R sent&(Ljava/time/Instant;Ljava/util/List;)V  dataSent  countDataBytes(Ljava/util/List;)J  net/luminis/quic/qlog/QLogemitPacketSentEvent&(Ljava/util/List;Ljava/time/Instant;)V  Z(net/luminis/quic/cc/CongestionController remainingCwnd  min(II)I 0Cannot send; anti-amplification limit is reached    mjava/util/Collections emptyList  getSourceConnectionId()[B  getDestinationConnectionId t assemble(II[B[B)Ljava/util/List;  java/time/InstantisBefore(Ljava/time/Instant;)Z! "#test ()Ljava/util/function/Predicate; f% &'filter9(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;) *+ applyAsInt$()Ljava/util/function/ToIntFunction; f- ./mapToInt@(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream; 123 4java/util/stream/IntStreamsum6$net/luminis/quic/send/SendStatistics 8 9ZgetLost ; <getSmoothedRtt > ? getRttVar A B getLatestRtt 5D E (IJJJJIII)V G H9receiverMaxAckDelay J KsetMaxAckDelay tM NenableAppLevel PQR Sm"net/luminis/quic/packet/QuicPacket getFrames!)W"net/luminis/quic/frame/StreamFrame VY Z getLength\)net/luminis/quic/packet/ShortHeaderPacket ^ _` getPacket&()Lnet/luminis/quic/packet/QuicPacket; b cgetPacketLostCallback e fg packetSentW(Lnet/luminis/quic/packet/QuicPacket;Ljava/time/Instant;Ljava/util/function/Consumer;)V ijk flnet/luminis/quic/IdleTimer:(Lnet/luminis/quic/packet/QuicPacket;Ljava/time/Instant;)V Pn ogetEncryptionLevel qrs tu)net/luminis/quic/crypto/ConnectionSecrets getOwnAeadB(Lnet/luminis/quic/EncryptionLevel;)Lnet/luminis/quic/crypto/Aead;wjava/lang/IllegalStateExceptiony z6(Lnet/luminis/quic/EncryptionLevel;)Ljava/lang/String; v| P~ generatePacketBytes"(Lnet/luminis/quic/crypto/Aead;)[B  put P getPacketNumber()Ljava/lang/Long; $(Ljava/lang/Long;)Ljava/lang/String; R raw(Ljava/lang/String;[B)V  clear  sendLoop  6(Ljava/time/Clock;Lnet/luminis/quic/EncryptionLevel;)V  qjava/lang/ClassdesiredAssertionStatusnet/luminis/quic/send/Sender2net/luminis/quic/cc/CongestionControlEventListener(Lnet/luminis/quic/VersionHolder;ILjava/net/DatagramSocket;Ljava/net/InetSocketAddress;Lnet/luminis/quic/QuicConnectionImpl;Ljava/lang/Integer;Lnet/luminis/quic/log/Logger;)VCodeLineNumberTableLocalVariableTablethis"Lnet/luminis/quic/send/SenderImpl;version Lnet/luminis/quic/VersionHolder; initialRttLjava/lang/Integer; StackMapTablenet/luminis/quic/VersionHolder.(Lnet/luminis/quic/crypto/ConnectionSecrets;)VsecretsG(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;)Vframe"Lnet/luminis/quic/frame/QuicFrame;level"Lnet/luminis/quic/EncryptionLevel;d(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)VframeLostCallbackLjava/util/function/Consumer;LocalVariableTypeTableALjava/util/function/Consumer; Signature(Lnet/luminis/quic/frame/QuicFrame;Lnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V`(Ljava/util/function/Function;ILnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V frameSupplierLjava/util/function/Function; minimumSize lostCallbackTLjava/util/function/Function;(Ljava/util/function/Function;ILnet/luminis/quic/EncryptionLevel;Ljava/util/function/Consumer;)V((Lnet/luminis/quic/packet/RetryPacket;)VeLjava/io/IOException; retryPacket%Lnet/luminis/quic/packet/RetryPacket;token[BsendAck(Lnet/luminis/quic/PnSpace;I)VpnSpaceLnet/luminis/quic/PnSpace;maxDelay sendProbe%(Lnet/luminis/quic/EncryptionLevel;)V5(Ljava/util/List;Lnet/luminis/quic/EncryptionLevel;)VframesLjava/util/List;4Ljava/util/List;Y(Ljava/util/List;Lnet/luminis/quic/EncryptionLevel;)VpacketProcessed expectingMoredatagramProcessedflush changeAddress(Ljava/net/DatagramSocket;)V newSocket/(Lnet/luminis/quic/PnSpace;Ljava/lang/String;)VspacereasonLjava/lang/String;shutdown(Ljava/lang/Runnable;)VpostShutdownActionbytesInFlightIncreased bytesInFlightbytesInFlightDecreased fatalErrorLjava/lang/Throwable;timeout Ljava/lang/InterruptedException; Exceptionsitems2Ljava/util/List;countdelayLjava/util/Optional;)Ljava/util/Optional;bufferOverflow"Ljava/nio/BufferOverflowException; itemsToSend datagramDatabufferLjava/nio/ByteBuffer;datagramLjava/net/DatagramPacket;timeSentLjava/time/Instant;6Ljava/util/List;5(Ljava/util/List;)VcurrentMaxPacketSizesrcCiddestCid4()Ljava/util/List;earliest;(Ljava/time/Instant;Ljava/time/Instant;)Ljava/time/Instant;instant1instant2packets9(Ljava/util/List;)J getStatistics(()Lnet/luminis/quic/send/SendStatistics;getPtogetCongestionController,()Lnet/luminis/quic/cc/CongestionController;setReceiverMaxAckDelay maxAckDelaygetGlobalAckGenerator'()Lnet/luminis/quic/GlobalAckGenerator;setAntiAmplificationLimitunsetAntiAmplificationLimitenableAllLevelsregisterMaxUdpPayloadSizemaxUdpPayloadSizelambda$countDataBytes$11'(Lnet/luminis/quic/packet/QuicPacket;)Ip$Lnet/luminis/quic/packet/QuicPacket;lambda$countDataBytes$10%(Lnet/luminis/quic/frame/QuicFrame;)Iflambda$countDataBytes$9%(Lnet/luminis/quic/frame/QuicFrame;)Zlambda$countDataBytes$8'(Lnet/luminis/quic/packet/QuicPacket;)Z lambda$send$7F(Lnet/luminis/quic/send/SendItem;)Lnet/luminis/quic/packet/QuicPacket;item Lnet/luminis/quic/send/SendItem; lambda$send$66(Ljava/time/Instant;Lnet/luminis/quic/send/SendItem;)V lambda$send$5<(Ljava/nio/ByteBuffer;Lnet/luminis/quic/packet/QuicPacket;)VpacketaeadLnet/luminis/quic/crypto/Aead; packetData/net/luminis/quic/crypto/Aead lambda$send$4 lambda$stop$3+(Lnet/luminis/quic/send/SendRequestQueue;)V(Lnet/luminis/quic/send/SendRequestQueue; lambda$send$2%(Lnet/luminis/quic/frame/QuicFrame;)V lambda$new$1 lambda$new$0 levelIndex SourceFileSenderImpl.javaBootstrapMethods> ?@A BC"java/lang/invoke/LambdaMetafactory metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;E(Ljava/lang/Object;)VG H 7L M 6O P 455S TUV W$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;YSending packet failed: [8Attempt to send probe on discarded space () => ignoring]Discarding pn space  because _ ` 122c+Ignoring  because sender is shutting down.e7Sender thread is interrupted; probably shutting down? g>possible bug: sender is looping in busy wait; got  iterationsi&(Ljava/lang/Object;)Ljava/lang/Object;k l 0##o p ()s/Buffer overflow while generating datagram for u v &'x#(Lnet/luminis/quic/send/SendItem;)Vz { "#}(Ljava/lang/Object;)Z   !!(Ljava/lang/Object;)I      #Missing keys for encryption level packet sent, pn:  InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup! <=B@9BCDGHKLOPYZ{|rs%&)*V5B>5B85B+5BH9B9BBB01B45B89B45.54  *+- pqR@9CDGHKLOP J * **#*Y '*+Y-.*2*6*+:*>*A*E*I*M*QW[*+ae*kY*mp*tY,**pvy*}Y**YY*Y*******Y**ƱjtTZ\$h/i4j9u>vCwIxOyUz[{f}x\ <=@9CDGHKLOPK R RI *+*¶α   U*,2+ױ  m*,2+-ױ * *-2+۱ 49#*Y+M*M+" ##RR + *y+    d*+2 9F*#YM*#+3*+2* *M+,çN,-=@@C@");EFF)DBI*#YN*#,3*,2+* *M,-ç :->AAEA#*<H III I*DB=*  5553*   >*+A D%R*#YN*#+35*y+*+*M+, *p+#*#+T-ç :-GJJNJ& #3;EQ RRREDBT*[&e*'*) t',*) /Y1*+2*6*¶9   &''5^5^=*  V*<*< *?2L*<*MD+F*I+I*M+M*2 *2PB2  ( !"+#6&E)L*U,.V BBBAY*'YL*T*WA *' [*TM*M*<ad+ç :+*6*<*g&)_>AAEA:/1234!7&;)9*:<<H@OATDXE *Y!G_DB i*jL+n*++nJKLOP   *'YL*T*'r+çM+,ST UVW BYZ,}*yuL+ym*:~+ A *.*2 *21*.6p*M'*2 B^_`(a.b6c;d=gDhMiVjflnmrpwryy*M%9(Q}uw uw=z( *>M,N+*-e:*M+Y,-*E*Eȷ:*:~:*A*Y`*Y+a*Y-a+*e+:*M*Ya*W (+Z}~ #(+-<?[dmwR- [d))+lme*<*>=*63**6*6*e=*M *IN*I:*y-*  $7CGOX4e Z9U9OX 7y+,,++,+,    m!* $(,0   ! !  f45Y*****7*:*=*@C3 4 A*:*=h`*F`   /* J*F*I 9/*p >*6 894*6  6*yL  N6*yL  S*>*> 9  M#*OT$U,0 # 2*VX  /*V   !/*[  "#/*] $%&'c*,]+,ad*,]+h $%()D*,mpN-vY,mx{,-}:+W*M, !(/C4DDD* 8+,(-!. 0#/*] $% 12/* 3 45+ 6/* 7e,>*Y+,S~*<=8994,I @:;<=DFI=JKJ=DNQRXRZR\=D^aRbRdRf=hjm=DnqRr=Dtw=hym=|~==|=RR