
    קg                        U d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
Z
defdZdee         fdZdee         fdZe j                            dd          d	k    Zd
ZdZd
Ze j                            d e            rdnd	          d	k    Z e            Zee         ed<   dZ e            Zee         ed<   e j                            d          d	k    ZdZee         ed<   dZe j                            dd          d	k    Ze j                            d e            rd	nd          d	k    Ze j                            dd          Z d
Z!dZ"e j                            dd	          d	k    Z#e j                            d          d	k    Z$dZ%dZ&dZ'e j                            dd          d	k    Z(e j                            dd          Z)dZ*dZ+d
Z,dZ-d
Z.dZ/eee
j0        j1        j2        gdf                  ed<   dZ3eee
j0        j1        j2        gdf                  ed<   dZ4eee
j0        j2        gdf                  ed<   dZ5eee
j0        j2        gdf                  ed<   dZ6eee
j0        j1        j2        gdf                  ed<   dZ7eeed          ged          f                  ed!<   dZ8d
Z9d
Z:d
Z;dZ<i i i i i i d"Z=ee>ee>ef         f         ed#<   i Z?ee>ee>ef         f         ed$<   dZ@e j                            d%d	          d	k    ZAd
ZBdZCd
d&d'dd(ZDee>ef         ed)<   d*ZEd
ZFg d+ZGd,ZHd-ZId.ZJe j                            d/          d	k    ZKe j                            d0          d	k    ZLe j                            d1          d	k    ZM e            rdne j                            d2          d	k    ZNe j                            d3d4          O                                ZPe j                            d5d6          O                                ZQe j                            d7d8          O                                ZRe j                            d9d	          d	k    ZSd:ZTd
ZUe j                            d;          d	k    ZVe j                            d<          d	k    ZWd=ZXd>ZYd?ZZe j                            d@          d	k    Z[e j                            dA          d	k    Z\e j                            dB          d	k    Z] ee j                            dCd	                    Z^e j                            dDdE          Z_e j                            dFdG          Z`dHe>defdIZadHe>defdJZbdHe>defdKZce j                            dLd8          Zde
je        jf        sd	ndZge j                            dMeg          d	k    Zhe j                            dNd          d	k    Zie j                            dOd	          d	k    Zje j                            dP          d	k    ZkdQZldRZmdSZnd
ZodZpd
Zqe j                            dT          d	k    Zre j                            dU          d	k    Zse j                            dVdE          Zte j                            dWd          d	k    Zue j                            dXd	          d	k    Zvd'ZwdYZxdSZydSZzd
Z{d
Z|dZ}e j                            dZd          d	k    Z~dZd
ZdZd
Zd
Zd
Zd'Zd'Zd
ZdZd
Zd
Zd[e
j        v pd\e
j        v Z e            peZe j                            d]d	          d	k    Zde>fd^Z e            Zd
Zd.Zd_d`gZee	eda         e>f                  edb<   d
Zeedc<   defddZ e            Z e            rl	 d delmZ erC ej        e j                            e                    dfe j                  dg                    Zn ej        dg          Zn# eef$ r dZY nw xY wdZdhZe j                            did	          d	k    Ze j                            djd	          d	k    Zd
ZdZdkZdlZd
ZdZd
Zeedm<   e j                            dnd          d	k    Zd
Zd
Zd
Zd
Ze j                            dodE          ZedEk    Zed	k    rdEneZe j                            dpd          Ze j                            dq          d	k    Zd
Ze j                            drd          d	k    Zeeds<   d
Zeedt<   e j                            du e            rd	nd          d	k    Zeedv<   d
Zeedw<   d
Zeedx<   d
Zeedy<   d
Zeedz<   d
Zeed{<    G d| d}          Z G d~ d          Z G d d          Z G d d          Z G d d          Zd}ZdZ G d d          Z G d d          Zg dZg dZerd dlT d dlmZ  eej        e                    dS )    N)AnyCallableDictListOptionalTYPE_CHECKINGUnionreturnc                  8    t          t          j        d           S )Ngit_version)hasattrtorchversion     R/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_inductor/config.py	is_fbcoder      s    u}m4444r   c                      t           j                            d          dk    rdS t           j                            d          dk    rdS d S )N#TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE1T0Fosenvirongetr   r   r   fx_graph_remote_cache_defaultr      E    	z~~;<<CCt	z~~;<<CCu4r   c                      t           j                            d          dk    rdS t           j                            d          dk    rdS d S )N#TORCHINDUCTOR_AUTOTUNE_REMOTE_CACHEr   Tr   Fr   r   r   r   autotune_remote_cache_defaultr       r   r   "TORCHDYNAMO_AUTO_FUNCTIONALIZED_V2r   r   FTTORCHINDUCTOR_FX_GRAPH_CACHEfx_graph_remote_cacheautotune_remote_cache"TORCHINDUCTOR_FORCE_DISABLE_CACHESsleep_sec_TESTING_ONLYflexible_layoutTORCHINDUCTOR_CPP_WRAPPERTORCHINDUCTOR_ABI_COMPATIBLETORCHINDUCTOR_C_SHIM_VERSION2TORCHINDUCTOR_SIZE_ASSERTSTORCHINDUCTOR_NAN_ASSERTSTORCHINDUCTOR_MEMORY_PLANNINGTORCHINDUCTOR_MEMORY_POOLintermediatespost_grad_custom_pre_passpost_grad_custom_post_passjoint_custom_pre_passjoint_custom_post_passpre_grad_custom_passz+torch._inductor.scheduler.BaseSchedulerNode_pre_fusion_custom_pass)batch_linearbatch_linear_lhsbatch_layernorm
batch_tanh
batch_relubatch_sigmoidpre_grad_fusion_optionspost_grad_fusion_options"TORCHINDUCTOR_DYNAMIC_SCALE_RBLOCKg-C6?   )pre_grad	precisionnum_iterationsrequires_optimizerfx_passes_numeric_check	heuristic)reorder_compute_for_overlap
sink_waitsraise_commsdefaulti,     TORCHINDUCTOR_MAX_AUTOTUNE$TORCHINDUCTOR_MAX_AUTOTUNE_POINTWISETORCHINDUCTOR_MAX_AUTOTUNE_GEMM"TORCHINDUCTOR_FORCE_SAME_PRECISION(TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDSzATEN,TRITON,CPP(TORCHINDUCTOR_MAX_AUTOTUNE_CONV_BACKENDSzATEN,TRITON,TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_SEARCH_SPACEDEFAULT'TORCHINDUCTOR_AUTOTUNE_FALLBACK_TO_ATENi    TORCHINDUCTOR_SAVE_ARGS!TORCHINDUCTOR_AUTOTUNE_IN_SUBPROCg      N@g      ?g       @#TORCHINDUCTOR_AUTOTUNE_MULTI_DEVICE'TORCHINDUCTOR_COORDINATE_DESCENT_TUNING5TORCHINDUCTOR_COORDINATE_DESCENT_CHECK_ALL_DIRECTIONS'TORCHINDUCTOR_COORDINATE_DESCENT_RADIUS#TORCHINDUCTOR_AUTOHEURISTIC_COLLECT TORCHINDUCTOR_AUTOHEURISTIC_USEmixed_mmnamec                 >    t          |           pt          |           S )N)collect_autoheuristicuse_autoheuristicr_   s    r   run_autoheuristicrd   o  s     &&A*;D*A*AAr   c                 X    | t           j        j        j                            d          v S N,)r   	_inductorconfigautoheuristic_collectsplitrc   s    r   ra   ra   s  s#    5?)?EEcJJJJr   c                 X    | t           j        j        j                            d          v S rf   )r   rh   ri   autoheuristic_userk   rc   s    r   rb   rb   w  s#    5?);AA#FFFFr   $TORCHINDUCTOR_AUTOHEURISTIC_LOG_PATH!TORCHINDUCTOR_LAYOUT_OPTIMIZATIONTORCHINDUCTOR_FORCE_LAYOUT_OPT TORCHINDUCTOR_KEEP_OUTPUT_STRIDETORCHINDUCTOR_WARN_MIX_LAYOUT         TORCHINDUCTOR_DEBUG_FUSIONTORCHINDUCTOR_BENCHMARK_FUSION#TORCHINDUCTOR_ENABLED_METRIC_TABLES(TORCHINDUCTOR_LOOP_ORDERING_AFTER_FUSION'TORCHINDUCTOR_BENCHMARK_EPILOGUE_FUSION@   TORCHINDUCTOR_BENCHMARK_KERNELdevgit0TORCHINDUCTOR_OPTIMIZE_SCATTER_UPON_CONST_TENSORc                      t           j                            dt                      rdnd          } | dv sJ d|              | S )NTORCHINDUCTOR_WORKER_STARTfork
subprocess)r   r   zInvalid start method: )r   r   r   r   )start_methods    r   decide_worker_start_methodr     sf    :>>$	&Mff L      /..   r   fuse_ddp_with_concat_opschedule_comm_wait).N_fuse_ddp_communication_passes_micro_pipeline_tpc                  Z   dt           j        v rt          t           j        d                   S t          j        dk    rdS t                      rdS t          t           d          r!t          t          j        d                    nt          j	                    } | sJ t          d|           S )a!  
    Here are the precedence to decide compile_threads
    1. User can override it by TORCHINDUCTOR_COMPILE_THREADS.  One may want to disable async compiling by
       setting this to 1 to make pdb happy.
    2. Set to 1 if it's win32 platform
    3. decide by the number of CPU cores
    TORCHINDUCTOR_COMPILE_THREADSwin32r@   sched_getaffinityr       )r   r   intsysplatformr   r   lenr   	cpu_countmin)r   s    r   decide_compile_threadsr   +  s     '"*442:=>???		 	 q	 	"q r.// C$Q''((( 	
 2y!!!r   )parutil.zfb/cache
   TORCHINDUCTOR_SHAPE_PADDING#TORCHINDUCTOR_COMPREHENSIVE_PADDING   i   force_shape_padTORCHINDUCTOR_PERMUTE_FUSIONTORCHINDUCTOR_PROFILETORCHINDUCTOR_PROFILE_OUTPUT3TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILINGTORCHINDUCTOR_FREEZINGfreezingfreezing_discard_parametersTORCHINDUCTOR_STACK_ALLOCATIONallow_stack_allocationuse_minimal_arrayref_interfacedecompose_mem_bound_mmassume_aligned_inputs.unsafe_ignore_unsupported_triton_autotune_args"check_stack_no_cycles_TESTING_ONLYc                      e Zd ZU dZej                            dd          dk    Zej                            dd          dk    ZdZ	e
e         ed<    eej                            dd	                    Zdej                            d
ej        dk    rdnd          fZej                            dd          dk    Zej                            dd          dk    ZdZe
e         ed<   dZe
e         ed<   dZe
e         ed<   dZ eej                            dd                    Zej                            dd          dk    Zej                            dd          dk    Zej                            dd          dk    Zej                            dd          dk    Z eej                            dd                    Zej                            dd          Zej                            dd          Z dZ!dS )cpp$TORCHINDUCTOR_CPP_NO_REDUNDANT_LOOPSr   !TORCHINDUCTOR_CPP_DYNAMIC_THREADSr   Nsimdlen TORCHINDUCTOR_CPP_MIN_CHUNK_SIZE4096CXXdarwinzclang++zg++'TORCHINDUCTOR_CPP_ENABLE_KERNEL_PROFILE TORCHINDUCTOR_CPP_WEIGHT_PREPACKinject_relu_bug_TESTING_ONLYinject_log1p_bug_TESTING_ONLY
vec_isa_okoriginal_aten,TORCHINDUCTOR_CPP_MAX_HORIZONTAL_FUSION_SIZE16-TORCHINDUCTOR_CPP_FALLBACK_SCATTER_REDUCE_SUM-TORCHINDUCTOR_CPP_ENABLE_UNSAFE_MATH_OPT_FLAG5TORCHINDUCTOR_CPP_ENABLE_FLOATING_POINT_CONTRACT_FLAG)TORCHINDUCTOR_CPP_ENABLE_TILING_HEURISTIC#TORCHINDUCTOR_CPP_GEMM_MAX_K_SLICES%TORCHINDUCTOR_CPP_GEMM_CACHE_BLOCKING%TORCHINDUCTOR_CPP_GEMM_THREAD_FACTORST)"__name__
__module____qualname__threadsr   r   r   no_redundant_loopsdynamic_threadsr   r   r   __annotations__min_chunk_sizer   r   cxxenable_kernel_profileweight_prepackr   strr   r   booldescriptive_namesmax_horizontal_fusion_sizefallback_scatter_reduce_sumenable_unsafe_math_opt_flag#enable_floating_point_contract_flagenable_tiling_heuristicsgemm_max_k_slicesgemm_cache_blockinggemm_thread_factorsenable_loop_tail_vecr   r   r   r   r     sN        G
 	
=sCCsJ  jnn%H#NNRUUO!GXc]!!!S(JFSSTTN
 	
u3<8+C+CiiOOC 	
@#FF#M 
 Z^^$FLLPSSN
 37 (3-66637!8C=777 "&J%%% ( "%

EtLL" " 	
FLLPSS   	
FLLPSS   	
NPSTT	 ( 	
BCHHCO  BJNN+PRUVVWW *..)PRVWW *..)PRVWW  r   r   c                      e Zd ZU ej                            d          dk    ZdZdZdZ	dZ
 e            rdndZdZdZee         ed<   dZdZdZdZdZdZdZdZdZeed	<   dZdZdZdZdZ ej                            d
          dk    Z!dZ"ej                            dd          dk    Z# eej                            dd                    Z$dZ%dZ&dZ'dZ(eed<   dZ)dZ*ee+         ed<   dZ,dS )tritonTORCHINDUCTOR_CUDAGRAPHSr   TFr   2   "cudagraph_dynamic_shape_warn_limit   prefer_nd_tiling!TORCHINDUCTOR_UNIQUE_KERNEL_NAMESr   #TORCHINDUCTOR_PERSISTENT_REDUCTIONSTORCHINDUCTOR_MULTI_KERNELr         spill_thresholdNr   )-r   r   r   r   r   r   
cudagraphscudagraph_treescudagraph_skip_dynamic_graphsslow_path_cudagraph_asserts!cudagraph_trees_history_recordingr    cudagraph_support_input_mutation#cudagraph_unexpected_rerecord_limitr   r   r   r   force_cudagraph_syncforce_cudagraphs_warmupfast_path_cudagraph_assertsskip_cudagraph_warmupdebug_sync_graphdebug_sync_kerneldense_indexing	max_tilesr   r   autotune_pointwiseautotune_cublasLtautotune_at_compile_time tiling_prevents_pointwise_fusion tiling_prevents_reduction_fusionunique_kernel_namesr   persistent_reductionsmulti_kerneldivisible_by_16min_split_scan_rblockstore_cubinr   use_block_ptrr   r   codegen_upcast_to_fp32r   r   r   r   r   ?  s         :;;sBJ O %*! #' ).% 1:	'Euu$ +.' 9;&::: ! $ #( "   N I #d"""    % (,$'+$ *..)LMMQTT ( 	
<cBBcI  3rz~~&BCHHIIL O   K OS M
 37 (3-666 "r   r   c                   8   e Zd ZU dZej                            dd          dk    Zej                            dd          dk    Ze	e
d<   ej                            dd          Zej                            dd	          ZdZdZd
Ze	e
d<   d
Ze	e
d<   d
Ze	e
d<   d	S )aot_inductorr\   AOT_INDUCTOR_DEBUG_COMPILEr   r   "AOT_INDUCTOR_DEBUG_DUMP_CONSTS_BINdebug_dump_consts_bin-AOT_INDUCTOR_DEBUG_INTERMEDIATE_VALUE_PRINTER&AOT_INDUCTOR_FILTERED_KERNELS_TO_PRINTNFuse_runtime_constant_foldingforce_mmap_weightspackage)r   r   r   output_pathr   r   r   debug_compiler  r   r    debug_intermediate_value_printerfiltered_kernel_namesserialized_in_specserialized_out_specr  r  r  r   r   r   r  r    s          KJNN#?EELM 	
;SAASH 4    (*z~~7( ($
 JNN0$ 
   */ $...  %$$$GTr   r  c            
          e Zd ZU dZee         ed<   dZee         ed<   dZdZ	dZ
dZdZej                            dej                            ej                            ej                            ej                  d                              ZdZee         ed<   dZee         ed	<   d
Zeed<   ej                            dd          dk    Zeed<   dZee         ed<   dZee         ed<   dS )cudaNarchr   z-O1FTORCHINDUCTOR_CUTLASS_DIRz../third_party/cutlass/cutlass_max_profiling_configscuda_cxxr@   cutlass_backend_min_gemm_size/INDUCTOR_CUDA_BACKEND_GENERATE_TEST_RUNNER_CODEr   generate_test_runnercutlass_op_allowlist_regexpingpongcutlass_op_denylist_regex)r   r   r   r  r   r   r   r   compile_opt_levelenable_cuda_ltoenable_ptxas_infoenable_debug_infouse_fast_mathr   r   r   pathabspathjoindirnamer   __file__cutlass_dirr  r   r  r  r  r   r  r  r   r   r   r  r    sU         D(3-
 "GXc]!!!  O   M *..#
GLL88:STT	
 	
 K 48!8C=777 #Hhsm""" *+!3***
 	
H#NNRUU $    15444 0:x}99999r   r  c                       e Zd ZU g Zee         ed<   g dZee         ed<   dZdZ	dZ
dZdZdZdZee         ed<   ej                            d	          ZdZee         ed
<   dZeed<   dS )rocmr  )gfx90agfx940gfx941gfx942ck_supported_archz-O2FTN	rocm_homeTORCHINDUCTOR_CK_DIRn_max_profiling_configsuse_preselected_instances)r   r   r   r  r   r   r   r1  r   is_debug
save_tempsr$  flush_denormalsprint_kernel_resource_usager2  r   r   r   r   ck_dirr4  r   r5  r   r   r   r   r,  r,  9  s          D$s) $L#K#KtCyKKK  H J M O #(  $Ix}### Z^^233F .2Xc]111 ',t+++++r   r,  c                   *    e Zd ZdZdZdZdZdZdZdZ	dS )halidehostz	host-cudaAnderson2021	Adams2019FN)
r   r   r   
cpu_target
gpu_targetscheduler_cudascheduler_cpuassertsdebugscan_kernelsr   r   r   r<  r<  j  s;        J J $NM G E LLLr   r<  c                      e Zd ZU ej                            dd          dk    ZdZee	         e
d<   dZdZdZdZdZdZdZej                            dd          dk    Zej                            d	d          dk    Zej                            d
d          Zej                            dd          ZdZdZeee	gdf                  e
d<   dZee
d<   dS )traceTORCH_COMPILE_DEBUGr   r   N	debug_dirFTINDUCTOR_POST_FUSION_SVGINDUCTOR_ORIG_FX_SVGINDUCTOR_DOT_GRAPH_SHAPE_SVG INDUCTOR_LOG_URL_FOR_GRAPH_XFORM
upload_tarlog_autotuning_results)r   r   r   r   r   r   enabledrJ  r   r   r   	debug_loginfo_logfx_graphfx_graph_transformedir_pre_fusionir_post_fusionoutput_codegraph_diagramdraw_orig_fx_graphdot_graph_shapelog_url_for_graph_xformcompile_profilerO  r   rP  r   r   r   r   rH  rH    s        jnn2C88C?G  $Ix}### I H H   M N K JNN#=sCCsJM (>DDK jnn%CTJJO !jnn-OQUVV O 37J3%+./666#(D(((((r   rH  )ztrace.upload_tarr2   r1   r3   r4   r5   )rH  zcuda.cutlass_dircompile_threads)*)install_config_module)r   r   typingr   r   r   r   r   r   r	   r   r   r   r   r    r   r   enable_auto_functionalized_v2rE  disable_progressverbose_progressfx_graph_cacher#   r   autotune_local_cacher$   force_disable_cachesr&   r   #custom_op_default_layout_constraintcpp_wrapperabi_compatiblec_shim_versiondcestatic_weight_shapessize_assertsnan_assertspick_loop_ordersinplace_buffersallow_buffer_reusememory_planningmemory_poolbenchmark_harnessepilogue_fusionepilogue_fusion_firstpattern_matcherb2b_gemm_passr1   fxgraphGraphr2   r3   r4   r5   r6   split_cat_fx_passes efficient_conv_bn_eval_fx_passesis_predispatchgroup_fusionbatch_fusionr=   r   r>   reorder_for_localitydynamic_scale_rblockforce_fuse_int_mm_with_muluse_mixed_mmrE   mixed_mm_choice reorder_for_compute_comm_overlap'reorder_for_compute_comm_overlap_passesestimate_op_runtimeintra_node_bwinter_node_bwmax_autotunemax_autotune_pointwisemax_autotune_gemmforce_same_precisionuppermax_autotune_gemm_backendsmax_autotune_conv_backendsmax_autotune_gemm_search_spaceautotune_fallback_to_atenunbacked_symint_fallbacksearch_autotune_cache	save_argsautotune_in_subproc+max_autotune_subproc_result_timeout_seconds-max_autotune_subproc_graceful_timeout_seconds.max_autotune_subproc_terminate_timeout_secondsautotune_multi_devicecoordinate_descent_tuning'coordinate_descent_check_all_directions coordinate_descent_search_radiusrj   rm   rd   ra   rb   autoheuristic_log_pathr   hiplayout_opt_defaultlayout_optimizationforce_layout_optimizationkeep_output_stridewarn_mix_layoutrealize_reads_thresholdrealize_opcount_thresholdrealize_acc_reads_thresholdfallback_randomimplicit_fallbacksaggressive_fusiondebug_fusionbenchmark_fusionenabled_metric_tablesloop_ordering_after_fusionbenchmark_epilogue_fusion max_epilogue_benchmarked_choicesmax_fusion_sizemax_pointwise_cat_inputsunroll_reductions_thresholdcomment_originconv_1x1_as_mmsplit_reductionsbenchmark_kernelconstant_and_index_propagationalways_keep_tensor_constantsassert_indirect_indexingcompute_all_boundscombo_kernelsbenchmark_combo_kernelcombo_kernels_autotunecombo_kernel_allow_mixed_sizes#combo_kernel_foreach_dynamic_shapesjoint_graph_constant_foldingdebug_index_assertsemulate_precision_casts__version__is_nightly_or_sourcedeveloper_warnings"optimize_scatter_upon_const_tensorr   worker_start_method_fuse_ddp_communication_fuse_ddp_bucket_sizer   r   r   r^  libfb.pyr   __package__get_dir_pathr%  r'  replacesepglobal_cache_dir
ValueErrorModuleNotFoundErrorkernel_name_max_opsshape_paddingcomprehensive_paddingpad_channels_lastdisable_padding_cpupadding_alignment_bytespadding_stride_thresholdpad_outputsbw_outputs_user_visibler   permute_fusionprofiler_mark_wrapper_callgenerate_intermediate_hooksdebug_ir_traceback_raise_error_for_testing_profile_varprofile_bandwidthprofile_bandwidth_regexprofile_bandwidth_output/profile_bandwidth_with_do_bench_using_profilingdisable_cpp_codegenr   r   r   r   r   r   r   r   r   r   r  r  r,  cpu_backendcuda_backendr<  rH  _save_config_ignore_cache_config_ignore_prefixtorch.utils._config_typingtorch.utils._config_moduler`  modulesr   r   r   r   <module>r     s#   					 



 L L L L L L L L L L L L L L L L L L 54 5 5 5 5x~    x~     JNN7==D 
 	     JNN1))++3N333OOSVV  )F(E(G(G x~ G G G   )F(E(G(G x~ G G G z~~&JKKsR  )-  , , , '8 # jnn8#>>#E JNN1))++3N333OOSVV   >DD    z~~:C@@CGjnn899S@      *..!@#FF#M jnn8/JJ        OS 8Hehn.B-CT-I$JK R R ROS HXux~/C.Dd.J%KL S S S EI x%(.)94)? @A H H HEI 58>*:D*@!AB I I I
 JN hx)=(>(DEF M M M 	 	;	<=:;	= 	 	 	   $)     * 6 6 c4S>12    79 $sDcN23 8 8 8   z~~&JCPPTWW  # 
  	+ + c3h   (  $)  + + + '      z~~:;;sB (NOOSVV  JNN#DEEL  IKKXDDRZ^^,PQQUXX   Z^^.0A %''   Z^^. %''  "$2I" "%''  JNN<cBBcI      JNN455<	 jnn%HIISP 
 /3 +03 -14 . 
'LMMQTT  JNN<==D  JNNJKKsR ( $'3JNN<cBB$ $   
'LbQQ JNN#DjQQ BC BD B B B BK K K K K KGC GD G G G G *I  
 !& 1:SSs JNN68JKKsR  JNN+KSQQUXX  Z^^$FLLPSS  *..!@AASH
            z~~:;;sB:>>"BCCsJ 
'LbQQ JNN=sCCsJ  JNN<cBBcI 
 $%            :>>"BCHHCO  "&   %           "# &+ #  $        11OUe>O5O Y[[8$8  JNNEsKKsR #C     1022       I U8I+>+C%D E   
 ! D      " " " " "0 )(** 9;; 
 $$$$$$ 	@3w3[00bf==zJJ     4w3J??+,           
<cBBcI JNN8#>>#E       (            >DDK # 
 $    ! z~~5r:: B&  , 3 3""  :>>*H$OO  JNNHIISP 0    8#>>#E$ E E E %* T ) ) )
 JNN3IIKK5PSSSQQUXX     (-  , , ,  %  $ $ $
 $ t # # # 8= . < < < ,1 "D 0 0 0`  `  `  `  `  `  `  ` HB" B" B" B" B" B" B" B"J) ) ) ) ) ) ) )XF: F: F: F: F: F: F: F:R', ', ', ', ', ', ', ',V         0:) :) :) :) :) :) :) :)z        -,,,, < < < < < <  ck(+ , , , , ,s   A_" "	_.-_.