
    Ǆg                     v   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                  j!                  dd      d	k(  Zd
ZdZd
Ze j                  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                  j!                  d      d	k(  ZdZee   ed<   dZe j                  j!                  dd      d	k(  Ze j                  j!                  d e       rd	nd      d	k(  Ze j                  j!                  dd      Z d
Z!dZ"e j                  j!                  dd	      d	k(  Z#e j                  j!                  d      d	k(  Z$dZ%dZ&dZ'e j                  j!                  dd      d	k(  Z(e j                  j!                  dd      Z)dZ*dZ+d
Z,dZ-d
Z.dZ/eee
j`                  jb                  jd                  gdf      ed<   dZ3eee
j`                  jb                  jd                  gdf      ed<   dZ4eee
j`                  jd                  gdf      ed<   dZ5eee
j`                  jd                  gdf      ed<   dZ6eee
j`                  jb                  jd                  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                  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                  j!                  d/      d	k(  ZKe j                  j!                  d0      d	k(  ZLe j                  j!                  d1      d	k(  ZM e       rdne j                  j!                  d2      d	k(  ZNe j                  j!                  d3d4      j                         ZPe j                  j!                  d5d6      j                         ZQe j                  j!                  d7d8      j                         ZRe j                  j!                  d9d	      d	k(  ZSd:ZTd
ZUe j                  j!                  d;      d	k(  ZVe j                  j!                  d<      d	k(  ZWd=ZXd>ZYd?ZZe j                  j!                  d@      d	k(  Z[e j                  j!                  dA      d	k(  Z\e j                  j!                  dB      d	k(  Z] ee j                  j!                  dCd	            Z^e j                  j!                  dDdE      Z_e j                  j!                  dFdG      Z`dHe>defdIZadHe>defdJZbdHe>defdKZce j                  j!                  dLd8      Zde
j                  j                  sd	ndZge j                  j!                  dMeg      d	k(  Zhe j                  j!                  dNd      d	k(  Zie j                  j!                  dOd	      d	k(  Zje j                  j!                  dP      d	k(  ZkdQZldRZmdSZnd
ZodZpd
Zqe j                  j!                  dT      d	k(  Zre j                  j!                  dU      d	k(  Zse j                  j!                  dVdE      Zte j                  j!                  dWd      d	k(  Zue j                  j!                  dXd	      d	k(  Zvd'ZwdYZxdSZydSZzd
Z{d
Z|dZ}e j                  j!                  dZd      d	k(  Z~dZd
ZdZd
Zd
Zd
Zd'Zd'Zd
ZdZd
Zd
Zd[e
j                  v xs d\e
j                  v Z e       xs eZe j                  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       ri	 d delmZ erL ej4                  e j6                  j9                  ej;                  dfe j<                        dg            Zn ej4                  dg      ZndZdhZe j                  j!                  did	      d	k(  Ze j                  j!                  djd	      d	k(  Zd
ZdZdkZdlZd
ZdZd
Zeedm<   e j                  j!                  dnd      d	k(  Zd
Zd
Zd
Zd
Ze j                  j!                  dodE      ZedEk7  Zed	k(  rdEneZe j                  j!                  dpd      Ze j                  j!                  dq      d	k(  Zd
Ze j                  j!                  drd      d	k(  Zeeds<   d
Zeedt<   e j                  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 dlʭ d dlmZ  eej                  e          y# eef$ r dZY w xY w)    N)AnyCallableDictListOptionalTYPE_CHECKINGUnionreturnc                  8    t        t        j                  d       S )Ngit_version)hasattrtorchversion     ^/home/mcse/projects/flask_80/flask-venv/lib/python3.12/site-packages/torch/_inductor/config.py	is_fbcoder      s    u}}m444r   c                      t         j                  j                  d      dk(  ryt         j                  j                  d      dk(  ryy )N#TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE1T0Fosenvirongetr   r   r   fx_graph_remote_cache_defaultr      7    	zz~~;<C	zz~~;<Cr   c                      t         j                  j                  d      dk(  ryt         j                  j                  d      dk(  ryy )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                 2    t        |       xs t        |       S )N)collect_autoheuristicuse_autoheuristicr_   s    r   run_autoheuristicrd   o  s     &A*;D*AAr   c                 l    | t         j                  j                  j                  j	                  d      v S N,)r   	_inductorconfigautoheuristic_collectsplitrc   s    r   ra   ra   s  s(    5??))??EEcJJJr   c                 l    | t         j                  j                  j                  j	                  d      v S rf   )r   rh   ri   autoheuristic_userk   rc   s    r   rb   rb   w  s(    5??));;AA#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                  z    t         j                  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     sQ    ::>>$	fL    / 
 ~./  r   fuse_ddp_with_concat_opschedule_comm_wait).N_fuse_ddp_communication_passes_micro_pipeline_tpc                  @   dt         j                  v rt        t         j                  d         S t        j                  dk(  ryt               ry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2::=>??		 	 r./ $$Q'( 	
 y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
                  j                  dd      dk(  Zej
                  j                  dd      dk(  ZdZ	e
e   ed<    eej
                  j                  dd	            Zdej
                  j                  d
ej                  dk(  rdnd      fZej
                  j                  dd      dk(  Zej
                  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
                  j                  dd            Zej
                  j                  dd      dk(  Zej
                  j                  dd      dk(  Zej
                  j                  dd      dk(  Zej
                  j                  dd      dk(  Z eej
                  j                  dd            Zej
                  j                  dd      Zej
                  j                  dd      Z dZ!y)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     s   G
 	

=sCsJ  jjnn%H#NRUUO!GXc]!(JFSTN
 	

u3<<8+CiOC 	

@#F#M 
 ZZ^^$FLPSSN
 37 (3-637!8C=7 "&J% ( "%


EtL" 	

FLPSS   	

FLPSS   	

NPST	 ( 	

BCHCO  BJJNN+PRUVW **..)PRVW **..)PRVW  r   r   c                      e Zd ZU ej                  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                  j                  d
      dk(  Z!dZ"ej                  j                  dd      dk(  Z# eej                  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,y)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   ?  sr    :;sBJ O %*! #' ).% 1:u$ +.' 9;&: ! $ #( "   N I #d"    % (,$'+$ **..)LMQTT ( 	

<cBcI  rzz~~&BCHIL O   K OS M
 37 (3-6 "r   r   c                   :   e Zd ZU dZej
                  j                  dd      dk(  Zej
                  j                  dd      dk(  Ze	e
d<   ej
                  j                  dd      Zej
                  j                  dd	      ZdZdZd
Ze	e
d<   d
Ze	e
d<   d
Ze	e
d<   y	)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JJNN#?ELM 	

;SASH 4  (*zz~~7($
 JJNN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                  j                  dej                   j#                  ej                   j%                  ej                   j'                  ej*                        d                  ZdZee   ed<   dZee   ed	<   d
Zeed<   ej                  j                  dd      dk(  Zeed<   dZee   ed<   dZee   ed<   y)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    s
    D(3-
 "GXc]!  O   M **..#
GGLL8:ST	
K 48!8C=7 #Hhsm" *+!3*
 	

H#NRUU $  154 0:x}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"                  j%                  d	      ZdZee   ed
<   dZeed<   y)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tCyK  H J M O #(  $Ix}# ZZ^^23F .2Xc]1 ',t+r   r,  c                   (    e Zd ZdZdZdZdZdZdZdZ	y)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 Lr   r<  c                      e Zd ZU ej                  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                  j                  dd      dk(  Zej                  j                  d	d      dk(  Zej                  j                  d
d      Zej                  j                  dd      ZdZdZeee	gdf      e
d<   dZee
d<   y)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    jjnn2C8C?G  $Ix}# I H H   M N K JJNN#=sCsJM (>DK jjnn%CTJO !jjnn-OQUV O 37J3%+./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 54 5x~ x~  JJNN7=D 
 	     JJNN1)+33OSVV  )F(G x~ G   )F(G x~ G zz~~&JKsR  )-  , '8 # jjnn8#>#E JJNN1)+33OSVV   >D    zz~~:C@CGjjnn89S@      **..!@#F#M jjnn8/J        OS 8Hehhnn.B.B-CT-I$JK ROS HXuxx~~/C/C.Dd.J%KL S EI x%((..)94)? @A HEI 588>>*:D*@!AB I
 JN hx)=)=(>(DEF M 	 	;	<=:;	= 	   $)     * 6 c4S>12  79 $sDcN23 8   zz~~&JCPTWW  # 
  	+ c3h (  $)  + '      zz~~:;sB (NOSVV  JJNN#DEL  KDRZZ^^,PQUXX   ZZ^^.0A%'   ZZ^^.%'  "$2I"%'  JJNN<cBcI      JJNN45<	 jjnn%HISP 
 /3 +03 -14 . 

'LMQTT  JJNN<=D  JJNNJKsR ( $'JJNN<cB$   

'LbQ JJNN#DjQ BC BD BK K KGC GD G *I 
 !& 1 1Ss JJNN68JKsR  JJNN+KSQUXX  ZZ^^$FLPSS  **..!@ASH
            zz~~:;sB::>>"BCsJ 

'LbQ JJNN=sCsJ  JJNN<cBcI 
 $%            ::>>"BCHCO  "&   %           "# &+ #  $        1 11OUe>O>O5O [8$8  JJNNEsKsR #C  12       I U8I+>+C%D E 
 ! D  " "0 )* ;
 $3w33[00bff=zJ   4w33J?
    

<cBcI JJNN8#>#E       (          >DK # 
 $    ! zz~~5r: B&  , 3"  ::>>*H$O  JJNNHISP 0    8#>#E$ E %* T )
 JJNN3IKSSQUXX   (-  ,  %  $
 $ t # 8= . < ,1 "D 0`  ` HB" B"J) )XF: F:R', ',V   0:) :)z   , < ckk(+ ,S +,   s   0A'f+ +	f87f8