
     h~b                     H   d Z ddlZddlZddlmZ ddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZmZ ddlmZmZmZmZmZmZmZm Z  ddl!mZ" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/ ddl0m1Z1 dZ2 e3ed          Z4 e'e5          Z6e6j7        e6j8        e6j9        e6j:        f\  Z7Z8Z;Z:da<da=d Z> e>             e/j?        Z?ej@        jA        ZBejC        jA        ZDe1jE        ZEe1jF        ZFe1jG        ZH G d d          ZIeeHeFdefdZJdS )zfTask request.

This module defines the :class:`Request` class, that specifies
how tasks are executed.
    N)datetime)	monotonictime)ref)TERM_SIGNAME)	safe_reprsafe_str)cached_property)current_appsignals)Context)fast_trace_task
trace_tasktrace_task_ret)IgnoreInvalidTaskErrorRejectRetryTaskRevokedError
TerminatedTimeLimitExceededWorkerLostError)r   )maybenoop)
get_logger)gethostname)get_pickled_exception)maybe_iso8601maybe_make_awaretimezone   )state)Requestpypy_version_infoFc                      t                               t          j                  at                               t          j                  ad S N)loggerisEnabledForloggingDEBUG_does_debugINFO
_does_info     Q/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/celery/worker/request.py__optimize__r1   -   s2     %%gm44K$$W\22JJJr/   c                      e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZesdZeddddddeddddeefdZed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Z ed             Z!ed             Z"ed             Z#ed             Z$e$j%        d             Z$ed             Z&ed             Z'ed             Z(e(j%        d             Z(ed             Z)ed             Z*ed              Z+ed!             Z,e,j%        d"             Z,ed#             Z-ed$             Z.ed%             Z/e/j%        d&             Z/ed'             Z0e0j%        d(             Z0ed)             Z1ed*             Z2ed+             Z3d, Z4dd-Z5d. Z6dFd/Z7dFd0Z8d1 Z9d2 Z:d3 Z;d4 Z<d5 Z=d6 Z>d7 Z?d8 Z@dGd9ZAd: ZBdHd;ZCdHd<ZDd= ZEd> ZFd? ZGeHd@             ZIeHdA             ZJeHdB             ZKeHdC             ZLeHdD             ZMeHdE             ZNdS )Ir#   zA request for task execution.FN)NN)_app_typenameid_root_id
_parent_id_on_ack_body	_hostname_eventer_connection_errors_task_eta_expires_request_dict
_on_reject_utc_content_type_content_encoding	_argsrepr_kwargsrepr_args_kwargs_decoded	__payload__weakref____dict__Tc                    || _         ||j                                        n|                                | _        |
|j        n|
| _        || _        || _        || _        |rd x| _	        | _
        n|j        |j        c| _	        | _
        | j        r| j        n|j        | _        | j        d         | _        | j        d         x| _        | _        d| j        v r| j        d         p| j        | _        | j                            d          | _        | j                            d          | _        | j                            dd           }|r|| _        | j                            dd          | _        | j                            d	d          | _        || _        |	| _        |pt5                      | _        || _        |pd
| _        |p| j        j        | j                 | _        | j                            dd          | _         | j                            d          }|X	  ||          }n4# tB          tD          tF          f$ r}tI          d|d|           d }~ww xY w ||| j%                  | _&        nd | _&        | j                            d          }|X	  ||          }n4# tB          tD          tF          f$ r}tI          d|d|           d }~ww xY w ||| j%                  | _'        nd | _'        |j(        pi }|j)        pi }|                    d          |                    d          |                    d          |                    d          d| _*        | j        +                    ||                    d          |                    d          | j        | j*        d           | j        \  | j        d<   | j        d<   }| j        d         | _,        | j        d         | _-        d S )Nr6   taskshadowroot_id	parent_id	timelimitargsrepr 
kwargsreprr.   ignore_resultFetazinvalid ETA value z: expireszinvalid expires value exchangerouting_keypriorityredelivered)rZ   r[   r\   r]   reply_tocorrelation_id)
propertiesr^   r_   hostnamedelivery_infoargskwargs)._messageheaderscopyrA   bodyr:   r3   rC   rJ   rD   rE   content_typecontent_encodingpayload_Request__payloadr6   r4   r5   getr7   r8   time_limitsrF   rG   r9   rB   r   r;   r<   r=   tasksr>   _ignore_resultAttributeError
ValueError	TypeErrorr   tzlocalr?   r@   rb   r`   _delivery_infoupdaterH   rI   )selfmessageon_ackra   eventerappconnection_errorsrequest_dictrO   	on_rejectrh   rf   decodedutcr   r   optsrS   rX   excrY   rb   r`   _s                           r0   __init__zRequest.__init__X   s-     8?go22444#*<<>> 	%)\W\\t
		 	:>>D!7!7 $g&> 7D 6 (,}I'/$T*!%!3F!;;
TYt)))*84A	DI*..y99,00==&**;==	 	)(D+//
B??-11,CC#!2[]]"3"9r8TY_TZ8
"044_eLL  $$U++?9#mC(("J	: 9 9 9&777#779 9 99 )(dl;;DIIDI$((33A'-00"J	: A A A&?W??#??A A AA -,WdlCCDMM DM-3'-2
%))*55(,,];;"z22(,,];;	
 
 	!!$"z22(nn-=>>!0#
 #
 	 	 	 GKnC6"D$6x$@!'/
)(3s0   "H. .IIIJ) )K KKc                     | j         S r&   )ru   rw   s    r0   rb   zRequest.delivery_info       ""r/   c                     | j         S r&   )re   r   s    r0   rx   zRequest.message   
    }r/   c                     | j         S r&   rA   r   s    r0   r}   zRequest.request_dict       !!r/   c                     | j         S r&   )r:   r   s    r0   rh   zRequest.body   
    zr/   c                     | j         S r&   )r3   r   s    r0   r{   zRequest.app   
    yr/   c                     | j         S r&   )rC   r   s    r0   r   zRequest.utc   r   r/   c                     | j         S r&   )rD   r   s    r0   ri   zRequest.content_type   r   r/   c                     | j         S r&   )rE   r   s    r0   rj   zRequest.content_encoding   s    %%r/   c                     | j         S r&   )r4   r   s    r0   typezRequest.type   r   r/   c                     | j         S r&   )r7   r   s    r0   rQ   zRequest.root_id   r   r/   c                     | j         S r&   )r8   r   s    r0   rR   zRequest.parent_id   
    r/   c                     | j         S r&   )rF   r   s    r0   rT   zRequest.argsrepr   
    ~r/   c                     | j         S r&   )rH   r   s    r0   rc   zRequest.args   r   r/   c                     | j         S r&   )rI   r   s    r0   rd   zRequest.kwargs   
    |r/   c                     | j         S r&   )rG   r   s    r0   rV   zRequest.kwargsrepr   s    r/   c                     | j         S r&   )r9   r   s    r0   ry   zRequest.on_ack   r   r/   c                     | j         S r&   rB   r   s    r0   r~   zRequest.on_reject   r   r/   c                     || _         d S r&   r   rw   values     r0   r~   zRequest.on_reject   s    r/   c                     | j         S r&   )r;   r   s    r0   ra   zRequest.hostname   r   r/   c                     | j         S r&   )rp   r   s    r0   rW   zRequest.ignore_result   r   r/   c                     | j         S r&   r<   r   s    r0   rz   zRequest.eventer   r   r/   c                     || _         d S r&   r   )rw   rz   s     r0   rz   zRequest.eventer   s    r/   c                     | j         S r&   )r=   r   s    r0   r|   zRequest.connection_errors  s    &&r/   c                     | j         S r&   )r>   r   s    r0   rO   zRequest.task  r   r/   c                     | j         S r&   )r?   r   s    r0   rX   zRequest.eta  r   r/   c                     | j         S r&   r@   r   s    r0   rY   zRequest.expires  r   r/   c                     || _         d S r&   r   r   s     r0   rY   zRequest.expires  s    r/   c                 J    | j         | j        j        j        | _         | j         S r&   )_tzlocalr3   confr    r   s    r0   rt   zRequest.tzlocal  s     =  IN3DM}r/   c                 4    | j         j         p| j         j        S r&   )rO   rW   store_errors_even_if_ignoredr   s    r0   store_errorszRequest.store_errors  s    I++ 7	6	8r/   c                     | j         S r&   r6   r   s    r0   task_idzRequest.task_id#  s     wr/   c                     || _         d S r&   r   r   s     r0   r   zRequest.task_id(  s    r/   c                     | j         S r&   r5   r   s    r0   	task_namezRequest.task_name,  s     yr/   c                     || _         d S r&   r   r   s     r0   r   zRequest.task_name1  s    			r/   c                     | j         d         S )Nr^   r   r   s    r0   r^   zRequest.reply_to5  s     !*--r/   c                 8    | j                             dd          S )Nreplaced_task_nestingr   rA   rm   r   s    r0   r   zRequest.replaced_task_nesting:  s    !%%&=qAAAr/   c                     | j         d         S )Nr_   r   r   s    r0   r_   zRequest.correlation_id>  s     !"233r/   c                    | j         }| j        }|                                 rt          |          | j        \  }}| j        j        rt          nt          }|	                    || j
        || j        | j        | j        | j        f| j        | j        | j        | j        |p|j        |p|j        |	  	        }t+          t,          |          | _        |S )a  Used by the worker to send this task to the pool.

        Arguments:
            pool (~celery.concurrency.base.TaskPool): The execution pool
                used to execute this request.

        Raises:
            celery.exceptions.TaskRevokedError: if the task was revoked.
        rc   accept_callbacktimeout_callbackcallbackerror_callbacksoft_timeouttimeoutr_   )r6   r>   revokedr   rn   r3   use_fast_trace_taskr   r   apply_asyncr4   rA   r:   rD   rE   on_accepted
on_timeout
on_success
on_failuresoft_time_limit
time_limitr   r   _apply_result)	rw   poolrd   r   rO   r   r   traceresults	            r0   execute_using_poolzRequest.execute_using_poolC  s     'z<<>> 	,"7+++&*&6#
O#'9#@Tn!!*gt'94:$d&<> ,!__?(@D,@1$/" " 
 
 #3//r/   c           
         |                                  rdS | j        j        s|                                  | j        \  }}}| j        } |j        ||ddfi |pi  t          | j        | j        | j	        | j
        || j        | j        j        | j                  \  }}}}|r|                     d           n|                                  |S )zExecute the task in a :func:`~celery.app.trace.trace_task`.

        Arguments:
            loglevel (int): The loglevel used by the task.
            logfile (str): The logfile used by the task.
        NF)loglevellogfileis_eager)ra   loaderr{   requeue)r   rO   	acks_lateacknowledge_payloadrA   rv   r   r6   rH   rI   r;   r3   r   reject)rw   r   r   r   embedrequestretvalIs           r0   executezRequest.executed  s    <<>> 	F y" 	m1e$ 	 
 
 	 	 [b		 	 	 %TYT\SZ.2nTYEU)-4 4 41a  	KKK&&&&r/   c                     | j         rJt          j        | j         j                  }|| j         k    r#t                              | j                   dS dS dS )z%If expired, mark the task as revoked.TN)r@   r   nowtzinforevoked_tasksaddr6   )rw   r   s     r0   maybe_expirezRequest.maybe_expire  sX    = 	,t}344CT]""!!$'***t		 	""r/   c                 0   t          j        |pt                    }| j        r4|                    | j        |           |                     dd|d           n	||f| _        | j        -|                                 }||	                    |           d S d S d S )N
terminatedTF)
_signalssignumr   
time_startterminate_job
worker_pid_announce_revoked_terminate_on_ackr   	terminaterw   r   signalobjs       r0   r   zRequest.terminate  s    !7<88? 	2t777""<vuEEEE%)6\D")$$&&Cf%%%%% *)r/   c                    t          j        |pt                    }| j        r/|                    | j        |           |                                  | j        -|                                 }||                    |           d S d S d S r&   )	r   r   r   r   r   r   _announce_cancelledr   r   r   s       r0   cancelzRequest.cancel  s    !7<88? 	't777$$&&&)$$&&Cf%%%%% *)r/   c                 j   t          |            |                     d           d}t          |          }| j        j                            | j        || j                   | j                            || j        | j	        | j
        d            d| _        t          | j        | j        d            d S )Nztask-cancelledzcancelled by Celery)rx   )r   T)r   einfo)
task_ready
send_eventr   rO   backendmark_as_retryr6   _contexton_retryrc   rd   _already_cancelled
send_retry)rw   reasonr   s      r0   r   zRequest._announce_cancelled  s    4()))&F###	''(+04 	( 	? 	? 	? 		3DKFFF"&49dm4@@@@@@r/   c                 ,   t          |            |                     d|||           | j        j                            | j        || j        | j                   |                                  d| _	        t          | j        | j        |||           d S )Nztask-revoked)r   r   expiredr   store_resultT)r   r   r   r  )r  r  rO   r  mark_as_revokedr6   r  r   r   _already_revokedsend_revoked)rw   r	  r   r   r  s        r0   r   zRequest._announce_revoked  s    4#-fg 	 	O 	O 	O	))GVT]* 	* 	
 	
 	
 	 $TY *67	L 	L 	L 	L 	L 	Lr/   c                     d}| j         rdS | j        r|                                 }| j        t          v r9t          d| j        | j                   |                     |rdnddd|           dS dS )z%If revoked, skip task and mark state.FTzDiscarding revoked task: %s[%s]r  r   N)r  r@   r   r6   r   infor5   r   )rw   r  s     r0   r   zRequest.revoked  s      	4= 	*''))G7m##2DItwGGG""$3		)UD'   4ur/   c                     | j         r4| j         j        r*| j        j        r  | j         j        |fd| j        i| d S d S d S d S )Nuuid)r<   enabledrO   send_eventssendr6   )rw   r   fieldss      r0   r  zRequest.send_event  sl    = 	=T]2 	=ty7L 	=DMt<<$'<V<<<<<	= 	= 	= 	= 	= 	=r/   c                 \   || _         t                      t                      |z
  z
  | _        t	          |            | j        j        s|                                  |                     d           t          rt          d| j        | j        |           | j         | j        | j          dS dS )z4Handler called when task is accepted by worker pool.ztask-startedzTask accepted: %s[%s] pid:%rN)r   r   r   r   task_acceptedrO   r   r   r  r+   debugr5   r6   r   r   )rw   pidtime_accepteds      r0   r   zRequest.on_accepted  s    &&IKK-$?@dy" 	''' 	K0$)TWcJJJ!-DND23333 .-r/   c                 ~   |rt          d|| j        | j                   dS t          |            t	          d|| j        | j                   t          |          }| j        j                            | j        || j	        | j
                   | j        j        r"| j        j        r|                                  dS dS dS )z%Handler called if the task times out.z)Soft time limit (%ss) exceeded for %s[%s]z)Hard time limit (%ss) exceeded for %s[%s]r  N)warnr5   r6   r  errorr   rO   r  mark_as_failurer  r   r   acks_on_failure_or_timeoutr   )rw   softr   r   s       r0   r   zRequest.on_timeout  s     	#<$)TW. . . . . t=49dg/ / /#G,,CI--dm!. .   
 y" #ty'K #  """""# # # #r/   c                 &   |\  }}}|r?t          |j        t          t          f          r|j        |                     |d          S t          | d           | j        j        r|                                  | 	                    d||           dS )z6Handler called if the task was successfully processed.T	return_ok)
successfultask-succeededr   runtimeN)

isinstance	exception
SystemExitKeyboardInterruptr   r  rO   r   r   r  )rw   failed__retval__runtimerd   failedr   r*  s         r0   r   zRequest.on_success  s    "9 	;&*Z9J,KLL '&&??6T?:::4D))))9 	(IIIIIr/   c                     | j         j        r|                                  |                     dt	          |j        j                  t          |j                             dS )z-Handler called if the task should be retried.ztask-retriedr,  	tracebackN)	rO   r   r   r  r   r,  r   r	   r3  )rw   exc_infos     r0   r  zRequest.on_retry  sl    9 	"+H,>,B"C"C"*8+=">"> 	 	@ 	@ 	@ 	@ 	@r/   c           	         t          |            |j        }t          |t                    }|r5| j        s,| j        s%|                     ddt          |          d           dS t          |t                    rt          d|           t          |t                    r| 
                    |j                  S t          |t                    r|                                 S t          |t                    r|                     |          S d}t          |t                     }| j        j        rd| j        j        o|}| j        j        }	|rd}| 
                    |           d}n-|	r|                                  n| 
                    d           |su|s|sq| j        j                            | j        || j        | j                   t4          j                            | j        | j        || j        | j        |j        |           |r<|                      d	tC          tE          |j                            |j        
           |stG          d||j$                   dS dS )z/Handler called if the task raised an exception.r   TFNzProcess got: r   r  )senderr   r,  rc   rd   r3  r   ztask-failedr2  zTask handler raised error: %r)r4  )%r  r,  r+  r   r  r  r   strMemoryErrorr   r   r   r   r   r   r  r   rO   r   reject_on_worker_lostr"  r  r!  r6   r  r   r   task_failurer  rc   rd   r3  r  r   r   r   r4  )
rw   r4  send_failed_eventr&  r   is_terminatedr   is_worker_lostr   acks
             r0   r   zRequest.on_failure
  s   4 "3
33 	+ * 943H 9 && $C%9 9 9F[)) 	+3c33444V$$ 	+;;s{;333V$$ 	+##%%%U## 	+==*** #C999 	+	/   )6C 	+G,,,$)!! +  """" E***  	6N 	6) 	6I--dm!. .   
  %%TY03$)-1[080B,4	 & 6 6 6  	OO#$9(:L$M$MNN",      	.13#,. . . . . .	. 	.r/   c                 f    | j         s)|                     t          | j                   d| _         dS dS )zAcknowledge task.TN)acknowledgedr9   r'   r=   r   s    r0   r   zRequest.acknowledgeW  s<      	%LL!8999 $D	% 	%r/   c                     | j         sA|                     t          | j        |           d| _         |                     d|           d S d S )NTztask-rejectedr   )r@  rB   r'   r=   r  )rw   r   s     r0   r   zRequest.reject]  sT      	>OOFD$;WEEE $DOOOWO=====	> 	>r/   c                     | j         | j        |s| j        n| j        |s| j        n| j        | j        | j        | j        | j	        | j
        | j        d
S )N)
r6   r5   rc   rd   r   ra   r   r@  rb   r   )r6   r5   rH   rF   rI   rG   r4   r;   r   r@  rb   r   )rw   safes     r0   r  zRequest.infoc  s\    'I&*>DJJ*.DdllD4DJ/ -!//
 
 	
r/   c                 ,    d                     |           S )Nz{0.name}[{0.id}])formatr   s    r0   	humaninfozRequest.humaninfoq  s    !((...r/   c                     d                     |                                 | j        rd| j         dnd| j        rd| j         dndg                                          S )z``str(self)``. z ETA:[]rU   z
 expires:[)joinrF  r?   r@   stripr   s    r0   __str__zRequest.__str__t  so    xxNN%)Y6!TY!!!!B-1]B)))))
   577		r/   c                     d                     t          |           j        |                                 | j        | j                  S )z``repr(self)``.z<{}: {} {} {}>)rE  r   __name__rF  rF   rG   r   s    r0   __repr__zRequest.__repr__|  s<    &&JJ!1!1ND,
 
 	
r/   c                     | j         S r&   )rl   r   s    r0   r   zRequest._payload  r   r/   c                 B    | j         \  }}}|                    d          S )Nchordr   rm   rw   r   r   s      r0   rR  zRequest.chord  s#     m1eyy!!!r/   c                 B    | j         \  }}}|                    d          S )NerrbacksrS  rT  s      r0   rV  zRequest.errbacks  s#     m1eyy$$$r/   c                 6    | j                             d          S )Ngroupr   r   s    r0   rX  zRequest.group  s     !%%g...r/   c                 b    | j         }| j        \  }}} |j        di |pi  t          |          S )z9Context (:class:`~celery.app.task.Context`) of this task.r.   )rA   r   rv   r   )rw   r   r   r   s       r0   r  zRequest._context  sE     $ m1e%%"%%%wr/   c                 6    | j                             d          S )Ngroup_indexr   r   s    r0   r[  zRequest.group_index  s     !%%m444r/   r&   )TF)F)OrN  
__module____qualname____doc__r@  r   r   rn   r  r  r   r   r   IS_PYPY	__slots__r   r   r   r   propertyrb   rx   r}   rh   r{   r   ri   rj   r   rQ   rR   rT   rc   rd   rV   ry   r~   setterra   rW   rz   r|   rO   rX   rY   rt   r   r   r   r^   r   r_   r   r   r   r   r   r   r   r   r  r   r   r   r  r   r   r   r  rF  rL  rO  r
   r   rR  rV  rX  r  r[  r.   r/   r0   r#   r#   A   ss       ''LJJKMH 

	 (,$#'ddu$"2,R4 R4 R4 R4h # # X#   X " " X"   X   X   X " " X" & & X&   X   X   X   X   X   X     X    X   X         X # # X#   X ^    ^  ' ' X'   X   X   X ^  ^   X
 8 8 X8   X ^  ^   X    . . X. B B XB 4 4 X4  B       D  
& 
& 
& 
&	& 	& 	& 	&A A AL L L  = = =4 4 4# # #&J J J@ @ @K. K. K. K.Z% % %> > > >
 
 
 
/ / /  
 
 
   _ " " _" % % _% / / _/
     _  5 5 _5 5 5r/   r#   c
                     |j         |j        |j        |j        |o|j        |	j        rt          nt           G f	dd|           }
|
S )Nc                   2   	 e Zd ZfdZ fdZdS )#create_request_cls.<locals>.Requestc                 F   | j         }| j        s|v r#|                                 rt          |          | j        \  }} | j        || j        | j        | j        | j	        f| j
        | j        | j        | j        |p|p	|	  	        }t          
|          | _        |S )Nr   )r   rY   r   r   rn   r   r}   rh   ri   rj   r   r   r   r   r   r   )rw   r   rd   r   r   r   r   r   default_soft_time_limitdefault_time_limitr   r   r   s          r0   r   z6create_request_cls.<locals>.Request.execute_using_pool  s    lG 0= 8 8dllnn 8&w///*.*:'J [i$*;TY')>@ $ 0!%#,G0G"8&8&  F "'sF!3!3DMr/   c                    |\  }}}|r?t          |j        t          t          f          r|j        |                     |d          S  |            r|                                  r|                     d||           d S d S )NTr%  r(  r)  )r+  r,  r-  r.  r   r   r  )	rw   r/  rd   r0  r   r*  r   eventsr  s	         r0   r   z.create_request_cls.<locals>.Request.on_success  s    &=#FFG ?f."$517 8 8 + **v>>>Jt #  """ $VW        r/   N)rN  r\  r]  r   r   )	r   r   rg  rh  rj  r   r   r  r   s	   r0   r#   re    sj        	 	 	 	 	 	 	 	 	 	.	 	 	 	 	 	 	 	 	r/   r#   )r   r   r   r   r  r   r   r   )baserO   r   ra   rz   r   r   r  r   r{   r#   r   r   rg  rh  rj  s        ````  @@@@@r0   create_request_clsrl    s     "2"KI(F}#&#:N( ( ( ( ( ( ( ( ( ( ( ( ( ( ($ ( ( (T Nr/   )Kr^  r)   sysr   r   r   weakrefr   billiard.commonr   kombu.utils.encodingr   r	   kombu.utils.objectsr
   celeryr   r   celery.app.taskr   celery.app.tracer   r   r   celery.exceptionsr   r   r   r   r   r   r   r   celery.platformsr   celery.utils.functionalr   r   celery.utils.logr   celery.utils.nodenamesr   celery.utils.serializationr   celery.utils.timer   r   r    rU   r"   __all__hasattrr_  rN  r'   r  r  warningr   r  r-   r+   r1   tz_or_localtask_revokedr  r  
task_retryr  r  r  r   r   r#   rl  r.   r/   r0   <module>r     s   
  



                             ( ( ( ( ( ( 4 4 4 4 4 4 4 4 / / / / / / ' ' ' ' ' ' ' ' # # # # # # H H H H H H H H H HC C C C C C C C C C C C C C C C C C C C 1 0 0 0 0 0 / / / / / / / / ' ' ' ' ' ' . . . . . . < < < < < < G G G G G G G G G G      

 '#*
+
+	H		"L&+"NFL: tT5
3 3 3  "#($
#
k	5 k	5 k	5 k	5 k	5 k	5 k	5 k	5^ m",Dk6 6 6 6 6 6r/   