[PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL

Xi Ruoyao posted 1 patch 1 year, 8 months ago
arch/loongarch/Kconfig       | 5 ++++-
arch/loongarch/Kconfig.debug | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
[PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
"label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
(static key implementation) and etc. so it will produce some warnings.
This is causing the kernel CI systems to complain everywhere.

For GAS we can check if -mthin-add-sub option is available to know if
R_LARCH_{32,64}_PCREL are supported.

For Clang, we require Clang >= 18 and Clang >= 17 already supports
R_LARCH_{32,64}_PCREL, so we can always assume Clang is fine for
objtool.

Note that __jump_table is not generated by the compiler so
-fno-jump-table is completely irrelevant for this issue.

Fixes: cb8a2ef0848c ("LoongArch: Add ORC stack unwinder support")
Closes: https://lore.kernel.org/loongarch/Zl5m1ZlVmGKitAof@yujie-X299/
Closes: https://lore.kernel.org/loongarch/ZlY1gDDPi_mNrwJ1@slm.duckdns.org/
Closes: https://lore.kernel.org/loongarch/1717478006.038663-1-hengqi@linux.alibaba.com/
Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=816029e06768
Link: https://github.com/llvm/llvm-project/commit/42cb3c6346fc
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---
 arch/loongarch/Kconfig       | 5 ++++-
 arch/loongarch/Kconfig.debug | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
index e38139c576ee..e461a6c59f15 100644
--- a/arch/loongarch/Kconfig
+++ b/arch/loongarch/Kconfig
@@ -143,7 +143,7 @@ config LOONGARCH
 	select HAVE_LIVEPATCH
 	select HAVE_MOD_ARCH_SPECIFIC
 	select HAVE_NMI
-	select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS
+	select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB
 	select HAVE_PCI
 	select HAVE_PERF_EVENTS
 	select HAVE_PERF_REGS
@@ -273,6 +273,9 @@ config AS_HAS_LBT_EXTENSION
 config AS_HAS_LVZ_EXTENSION
 	def_bool $(as-instr,hvcl 0)
 
+config AS_HAS_THIN_ADD_SUB
+	def_bool $(cc-option,-Wa$(comma)-mthin-add-sub) || CC_IS_CLANG
+
 menu "Kernel type and options"
 
 source "kernel/Kconfig.hz"
diff --git a/arch/loongarch/Kconfig.debug b/arch/loongarch/Kconfig.debug
index 98d60630c3d4..8b2ce5b5d43e 100644
--- a/arch/loongarch/Kconfig.debug
+++ b/arch/loongarch/Kconfig.debug
@@ -28,6 +28,7 @@ config UNWINDER_PROLOGUE
 
 config UNWINDER_ORC
 	bool "ORC unwinder"
+	depends on HAVE_OBJTOOL
 	select OBJTOOL
 	help
 	  This option enables the ORC (Oops Rewind Capability) unwinder for
-- 
2.45.2
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Nathan Chancellor 1 year, 8 months ago
On Tue, Jun 04, 2024 at 11:07:41PM +0800, Xi Ruoyao wrote:
> GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> (static key implementation) and etc. so it will produce some warnings.
> This is causing the kernel CI systems to complain everywhere.
> 
> For GAS we can check if -mthin-add-sub option is available to know if
> R_LARCH_{32,64}_PCREL are supported.
> 
> For Clang, we require Clang >= 18 and Clang >= 17 already supports
> R_LARCH_{32,64}_PCREL, so we can always assume Clang is fine for
> objtool.

For what it's worth, I have noticed some warnings with clang that I
don't see with GCC but I only filed an issue on our GitHub and never
followed up on the mailing list, so sorry about that.

https://github.com/ClangBuiltLinux/linux/issues/2024

Might be tangential to this patch though but I felt it was worth
mentioning.

Cheers,
Nathan
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
> On Tue, Jun 04, 2024 at 11:07:41PM +0800, Xi Ruoyao wrote:
> > GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> > "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> > objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> > (static key implementation) and etc. so it will produce some warnings.
> > This is causing the kernel CI systems to complain everywhere.
> > 
> > For GAS we can check if -mthin-add-sub option is available to know if
> > R_LARCH_{32,64}_PCREL are supported.
> > 
> > For Clang, we require Clang >= 18 and Clang >= 17 already supports
> > R_LARCH_{32,64}_PCREL, so we can always assume Clang is fine for
> > objtool.
> 
> For what it's worth, I have noticed some warnings with clang that I
> don't see with GCC but I only filed an issue on our GitHub and never
> followed up on the mailing list, so sorry about that.
> 
> https://github.com/ClangBuiltLinux/linux/issues/2024
> 
> Might be tangential to this patch though but I felt it was worth
> mentioning.

The warnings in GCC build is definitely the issue handled by this patch.
But the warnings in Clang build should be a different issue.  Can you
attach the kernel/events/core.o file from the Clang build for analysis?
I guess we need to disable more optimization...

I personally hate "pessimizing the code generation just for debugging"
with a passion so I never enabled objtool on LoongArch, thus I didn't
notice the issue.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Nathan Chancellor 1 year, 8 months ago
On Wed, Jun 05, 2024 at 01:54:24PM +0800, Xi Ruoyao wrote:
> On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
> > For what it's worth, I have noticed some warnings with clang that I
> > don't see with GCC but I only filed an issue on our GitHub and never
> > followed up on the mailing list, so sorry about that.
> > 
> > https://github.com/ClangBuiltLinux/linux/issues/2024
> > 
> > Might be tangential to this patch though but I felt it was worth
> > mentioning.
> 
> The warnings in GCC build is definitely the issue handled by this patch.
> But the warnings in Clang build should be a different issue.  Can you
> attach the kernel/events/core.o file from the Clang build for analysis?
> I guess we need to disable more optimization...

Sure thing. Let me know if there are any issues with the attachment.

Cheers,
Nathan
ELF�A@@)init_wait_var_entryperf_output_copysized_strscpymemcpysw_perf_event_destroyexclusive_event_destroy.data..read_mostlyperf_event_addr_filters_applyget_user_pages_fast_onlyhugetlb_optimize_vmemmap_keybpf_stats_enabled_key__perf_event_init_context.__keyperf_event_init_all_cpus.__keyperf_event_init_task.__keyperf_event_alloc.__keyrb_free_auxrb_alloc_auxupdate_cgrp_time_from_cpuctxput_pmu_ctxput_ctxget_ctxadd_event_to_ctxperf_cpu_task_ctxfree_ctxmux_interval_mutexperf_sched_mutexproc_dointvec_minmax__perf_event_overflownr_addr_filters_showperf_event_mux_interval_ms_show__export_symbol_perf_event_sysfs_showtype_showcontext_equivfree_percpu.data..percpuperf_event_exit_cpuperf_event_init_cpupmus_srcusynchronize_srcufree_event_rcukvfree_call_rcuget_state_synchronize_rcucond_synchronize_rcurb_free_rcufree_epc_rcuperf_cpu_contextfind_get_pmu_context__perf_event_exit_contextfind_get_contextperf_adjust_freq_unthr_contextperf_swevent_put_recursion_context__export_symbol_perf_swevent_get_recursion_contextperf_unpin_context__perf_install_in_context__perf_remove_from_contextperf_pin_task_contextperf_lock_task_context__export_symbol_perf_pmu_migrate_context.rela.init.text.rela.textcgroup_taskset_nextrb_nextperf_event_outputperf_event_set_outputperf_event_namespaces_outputperf_event_cgroup_outputperf_event_mmap_outputperf_event_comm_outputperf_event_ksymbol_outputperf_event_task_outputperf_event_switch_outputperf_event_bpf_outputperf_event_text_poke_outputmmputfputring_buffer_put__folio_putpath_putbpf_prog_putmodule_putperf_event_delayed_put__pmu_ctx_sched_outtask_ctx_sched_outevent_sched_out__perf_event_task_sched_outcgroup_taskset_firstrb_firstsched_cb_listperf_event_groups_insertperf_swevent_startcpu_clock_event_starttask_clock_event_start__perf_event_account_interruptperf_rebootperf_throttled_countperf_sched_countkstrtointperf_event_modify_breakpointinit_hw_breakpointperf_pmu_nop_intperf_event_nop_intperf_sweventperf_event_aux_eventperf_get_aux_event___perf_sw_eventaccount_eventperf_swevent_eventperf_event_exit_eventinherit_eventperf_try_init_eventprepare_to_wait_eventperf_get_eventperf_bp_eventlist_del_eventperf_event_bpf_event_free_event.commentsysctl_perf_cpu_time_max_percentperf_event_idx_defaultperf_mmap_fault__mutex_initperf_swevent_initcpu_clock_event_inittask_clock_event_initperf_event_initperf_event_sysfs_inithrtimer_init.rela.initcall6.init___ratelimit_find_next_bitfinish_waitperf_fget_lightmemset__per_cpu_offsetktime_get_with_offset_perf_event_resetfget__fdgetswevent_hlist_getperf_event_getring_buffer_getbpf_prog_gettry_module_getinit_srcu_struct__put_task_structperf_event_sync_statperf_event_cgrp_subsysperf_event_init_all_cpus__num_online_cpuspmuspmu_busnr_namespaces_eventsperf_adjust_freq_unthr_eventsnr_freq_eventsnr_cgroup_eventsnr_mmap_eventsnr_comm_eventsnr_ksymbol_eventsnr_task_eventsnr_switch_eventsnr_bpf_eventsnr_text_poke_eventsnr_build_id_eventsperf_sched_eventspmu_sb_eventsptrace_may_access.bsspmu_dev_attrsperf_event_attrsdev_attr_nr_addr_filtersput_callchain_buffersget_callchain_buffersperf_duration_warn._rspmu_dev_groupssysfs_update_groupsperf_mmap_vmopsperf_fopsperf_event_parse_addr_filter.actionsmntns_operationsnetns_operationsutsns_operationsuserns_operationscgroupns_operationspidns_operationsipcns_operationsif_tokensktime_get_raw_fast_nsktime_get_mono_fast_ns__task_pid_nr_nsktime_get_real_nsktime_get_clocktai_nsktime_get_boottime_nshrtimer_start_range_nsperf_sample_period_nsput_pid_nsinit_pid_nstask_active_pid_nsperf_sample_allowed_nsdev_attr_perf_event_mux_interval_ms__perf_regsnop_txn_flagsget_unused_fd_flagsperf_log_lost_sampleskmalloc_cachesperf_sched_cb_usagesperf_event_namespacesnr_cpu_idsperf_copy_attr.rodata.strtask_currrb_insert_colorcss_tryget_online_from_dir__export_symbol_perf_pmu_unregister__export_symbol_perf_pmu_registerbus_register__export_symbol_perf_event_create_kernel_counter__copy_userperf_get_regs_userstrndup_usercheck_zeroed_userfasync_helperperf_remove_from_ownerperf_swevent_hrtimerperf_cpu_time_max_percent_handlerperf_mux_hrtimer_handlerperf_event_max_sample_rate_handlerregister_reboot_notifierperf_reboot_notifierperf_prepare_headerpmu_idrwake_up_varsystem_wq_raw_spin_unlock_irq_raw_spin_lock_irqperf_pending_irqperf_throttled_seqpmu_dev_attr_groupinherit_task_groupperf_event_wakeupkstrdupmatch_strdup__wake_up__perf_pmu_output_stopperf_swevent_stopcpu_clock_event_stoptask_clock_event_stop__perf_event_stopperf_cgroup_set_timestampperf_output_skipstrsepperf_event_mmapperf_mmap__pte_offset_map.rela.data.rel.roperf_pmu_start_txnperf_pmu_commit_txnperf_pmu_nop_txnperf_pmu_cancel_txnsecurity_locked_downperf_duration_warnevent_functionremote_functionperf_check_permissionqueue_delayed_work_onirq_work_queue_onperf_output_begin__empty_callchainget_perf_callchainctx_sched_inevent_sched_inctx_groups_sched_in__perf_event_task_sched_inmerge_sched_indelayed_work_timer_fnsecurity_perf_event_open__se_sys_perf_event_openperf_mmap_openstrlenmatch_tokenperf_event_comminit_mmget_task_mmperf_ioctlperf_event_ksymbol.rela.export_symbolkstrtoullperf_pollfd_installevent_function_call__stack_chk_failperf_allow_kernel__export_symbol_perf_event_release_kernelperf_swevent_delcpu_clock_event_deltask_clock_event_deldevice_delhrtimer_cancelperf_event_disable_localperf_event_read_local__warn_printkperf_event_exit_taskperf_event_init_taskperf_pending_taskperf_event_free_taskperf_pmu_sched_task__cpu_online_maskperf_online_mask__cpu_possible_maskperf_duration_workperf_sched_workperf_event_forkperf_sample_event_tookmutex_unlock_raw_spin_unlock__srcu_read_unlock__rcu_read_unlockcpus_read_unlocksysctl_perf_event_mlockperf_cpu_clockperf_event_set_clocklocal_clockperf_task_clocksched_clockatomic_dec_and_mutex_lockpmus_lock_raw_spin_lock__srcu_read_lock__rcu_read_lockcpus_read_lockmax_samples_per_tickperf_event_task_tickmodify_user_hw_breakpoint_checksysctl_perf_event_max_stack__SCK__perf_snapshot_branch_stack.note.GNU-stackperf_mux_hrtimer_restart_ipiperf_reg_abirunning_sample_lengthns_get_pathkern_pathfile_path__export_symbol_perf_event_refreshperf_cgroup_switchring_buffer_attachperf_cgroup_attachperf_group_detach__report_avgperf_event_print_debugperf_event_set_bpf_progperf_event_free_bpf_progpmu_bus_running__hrtimer_get_remaining.llvm_addrsigsprintfscnprintfsend_sig_perf__kmalloc_cache_noprof__kmalloc_cache_node_noprof__kmalloc_node_noprofkmem_cache_alloc_node_noprof__kmalloc_noprofpcpu_alloc_noprofkmem_cache_alloc_noprofperf_event__id_header_sizeperf_event__header_sizeperf_event_validate_sizeperf_get_page_sizedevice_initialize__perf_pmu_removeidr_remove__perf_cgroup_movebpf_prog_active_atomic_dec_and_raw_lock_irqsave_raw_spin_lock_irqsaveperf_reg_value__export_symbol_perf_event_read_value__perf_event_read_value__var_waitqueueirq_work_queuesecurity_perf_event_writeup_writedown_writeperf_event_set_statectx_event_to_rotaterefcount_warn_saturatesysctl_perf_event_sample_ratekmem_cache_createperf_reg_validate__export_symbol_perf_event_pausebuild_id_parseperf_mmap_closerb_erasepmu_dev_releaseperf_releasevm_map_base_raw_spin_unlock_irqrestoreperf_event_mux_interval_ms_storedev_attr_typeperf_pmu_register.__already_done__min_heap_pop.__already_doneperf_event_ksymbol.__already_doneperf_cgroup_css_onlineperf_event_update_timedev_set_namearch_vma_namedynamic_preempt_scheduleperf_log_throttleperf_output_sampleperf_prepare_sampleperf_event__output_id_sampleanon_inode_getfiledevice_remove_filesmp_call_function_singledown_read_interruptiblepmu_dev_is_visibleswevent_htable.rela__ex_table.rela__jump_table.rela__bug_tableinvalid_pte_tableinvalid_pmd_table.rela.discard.addressablestatic_key_disableperf_ctx_disableperf_pmu_disable__export_symbol_perf_event_disable__perf_event_disableperf_event_task_disablens_capablestatic_key_enableperf_ctx_enableperf_pmu_enable__export_symbol_perf_event_enable__perf_event_enableperf_event_task_enableexclusive_event_installable.rela.discard.unreachable.rela.discard.reachableperf_event_text_pokeperf_event_cachevisit_groups_mergeperf_event_init_userpage__export_symbol_perf_event_update_userpagearch_perf_update_userpageperf_mmap_to_pagekfreesecurity_perf_event_freeperf_cgroup_css_freekmem_cache_freerb_freekernfs_path_from_nodenuma_node.data.onceput_deviceperf_addr_filters_splicedynamic_preempt_schedule_notraceperf_event_output_forwardhrtimer_forwardperf_output_begin_forwardperf_event_output_backwardperf_output_begin_backward__stack_chk_guardperf_adjust_period__export_symbol_perf_event_period__perf_event_periodperf_swevent_set_periodmas_findidr_findperf_output_endget_uidfree_uidfind_lively_task_by_vpidfind_task_by_vpidperf_pmu_nop_voidsysctl_perf_event_paranoid__virt_addr_valid__export_symbol_perf_report_aux_output_idperf_event_id__perf_event_header__init_idput_unused_fdperf_sched_delayed__report_allowedperf_event_ctx_lock_nestedperf_event_itrace_startedperf_swevent_enabledctx_reschedperf_pmu_rescheddynamic_might_rescheddynamic_cond_reschedperf_swevent_addcpu_clock_event_addtask_clock_event_add__perf_read_group_addtask_work_adddevice_addperf_output_readperf_swevent_readcpu_clock_event_readtask_clock_event_readsecurity_perf_event_read__perf_event_readup_readdown_readperf_read__init_waitqueue_headpmu_dev_allocsecurity_perf_event_allocperf_cgroup_css_allocidr_allocrb_allockill_fasyncperf_fasync__export_symbol_perf_event_addr_filters_syncirq_work_syncstatic_key_slow_incperf_sched_cb_incperf_event_disable_inatomicperf_event_execstatic_key_slow_decperf_sched_cb_deccore.cperf_iterate_sbperf_ctx_sched_task_cb.strtab.symtabperf_event_swap_task_ctx_datacpu_data.rela.data__UNIQUE_ID___addressable_perf_event_addr_filters_sync689__UNIQUE_ID___addressable_perf_event_read_value739__UNIQUE_ID___addressable_perf_event_release_kernel738__initcall__kmod_core__885_13833_perf_event_sysfs_init6__UNIQUE_ID___addressable_perf_swevent_get_recursion_context836__UNIQUE_ID___addressable_perf_report_aux_output_id826.rodata.cst16__UNIQUE_ID___addressable_perf_pmu_migrate_context865perf_event_alloc.__key.35__UNIQUE_ID___addressable_perf_event_enable684__sw_hweight64__UNIQUE_ID___addressable_perf_event_create_kernel_counter864__UNIQUE_ID___addressable_perf_pmu_unregister854__UNIQUE_ID___addressable_perf_event_period744.rodata.str4.4__UNIQUE_ID___addressable_perf_event_sysfs_show883__UNIQUE_ID___addressable_perf_pmu_register853perf_event_alloc.__key.33__UNIQUE_ID___addressable_perf_event_pause742__UNIQUE_ID___addressable_perf_event_disable671__UNIQUE_ID___addressable_perf_event_update_userpage751.rodata.str1.1__static_call_return0__UNIQUE_ID___addressable_perf_event_refresh690.orc_unwind.orc_unwind_ip.rela.orc_unwind_ip�������( L@@@��@c��a �)v�)���
V���(@�@��K�X$T��D�� �L�����(����E��I������)�5w���"����)����(���E�Q����Q��<
���E�����������)��v�(a �(c@� LP@@@c��a �)v�)�T�n@�hD����(���dX�`@����(Ŕ�E�Q����Q��<
���E�ǔ�Ɯ�����)v�(a �(c@� L����T����S@@@@����(�|@���8	E���8�E�Xl��)����)�$E�&������(����A�l�����#P L���)����)�Đ����)���5w���"����)��P@ L@@@@@@@� �(�8���8�@ L���(�L� �(�8����8����@ L���(�L@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)����(�"�(��� X�����4D�TPP{ �(z@�(y`�(x��(w��(v��(a��(c� L�T�"@�T��"�(�\HP��"�(�8X�D�&X*P�(�@E�(�L\Ă�(�L\�dT@D$T�{ �(z@�(y`�(x��(w��(v��(a��(c�P*���S*���S@@@@@@@c@�a��)v��)w`�)x@�)y �)����(�p`���*�@�d@T�b�(���B�(���b�)�B�)����)���(�8@� �(��c�(�(@T#�(���(��#�)�)��C�)���(��(� �(�8���8�@�B�(�$X�� �TpP���(�L�B�(���_Ģ�(��T\���(��(� �(�8��@���T�B�(�,\�B�(�B�#X@@�����T�(��_����T���(�,@���(� �(���� �)��(�����)����D���)���(��(� �(�8����8���� @y �(x@�(w`�(v��(a��(c�� L���(y �(x@�(w`�(v��(a��(c���L*�+�S@@@c@�a��)v��)w`�)x@�)y �)���T����(T���(T `���P�T�"�T�y �(x@�(w`�(v��(a��(c��(P@c��a`�)v@�)w �)x�)����(�Tآ�(�T/`���x�(w �(v@�(a`�(c��ȸPx�(w �(v@�(a`�(c�� L@@@����)���P@@@@c��a`�)v@�)w �)����ׂ�(�T�*@�T,���@T�TP,��$T�w �(v@�(a`�(c��P@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)����@�����(�����\{g#@٢��2@ݢ�(��\�������(�@�|\e����T�D@�@�e����T����T��@����T��x�T�pP@@��(�g�[���(� �(�8���8���G���(�L���S@��(�O�[���(� �(�8���8���G���(�L���S����TW�(�N\�@֢�(�r\} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L@@��(���[���(� �(�8����8������G���(�L���S��(ٚ�[���(� �(�8����8������G���(�L���S*���C���S@c��a`�)v@�)w �)x�)��T����(T䢂(���hTHP���$\�*�@�@�B�(���[��䢂)T���|�T�"�T�x�(w �(v@�(a`�(c��XP@@@@@c��a`�)v@�)w �)����(�TĢ�(���h�w �(v@�(a`�(c��P���$\�*�@�@�B�(���[��Ģ�)�T���w �(v@�(a`�(c����P@@c��a`�)v@�)w �)��`�(���(�`@��(�@��������T�b�(�"�(�X�b�(�@�(��L�"�(�b�)�w �(v@�(a`�(c��Pw �(v@�(a`�(c�� L@@@@c��a`�)v@�)w �)x�)���T���4T�#�T�T�x�(w �(v@�(a`�(c�� Lc��a`�)v@�)w �)����*�@��DƢ�(�x@Ē��a8ע�(�TĢ�(���h�THP���$\�*�@�@�B�(���[��Ģ�)�T����T��w �(v@�(a`�(c�� L@c��a �)v�)�@�(�Fp�(��Fp�)�������a8Fp�(���Gp�)������DD �(�@�HD�B�(����B�)����$D��(�"�(� �)��)���"�)���)v�(a �(c@� LT���S@@@@@@@�@�(���@�(���@�)�(D���8��� �)��� �)��)�8Dp�(��Dp�)������a8Dp�(���Ep�)����DD �(�@�D LP@@@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)����D�(d��)���8�@��T����(�@@`��)v@�)�d`�)x �)C�(�@�dp@)��e ��KT�	&�BD��TD�(e��(�`\|��({��(z�(y �(x@�(w`�(v��(a��(c�� LT��	& @��($��(��l@�X%X�`\�T$T�%��T�0@���T�b�(�D$c�(�l@$TT,P$T�TT�T�\�T��T���T���T�T���S���D�����D��"�)8#�)���T�%<�T�P�Ty�)��)�%��T$T�TT���ST@@@@@@@�`Xc�a��)v��)w��)x��)y`�)z@�){ �)|�)�������(�,@|�({ �(z@�(y`�(x��(w��(v��(a��(c� L���n8�����[�����(c�(��@�����(�T @$T#�(�8���8�D��(�L���(c�(��L#�(�8����8����0@��(�@T�T��(����o�_�'�S@��(�L��(���G���S*���Sc@�a��)v��)w`�)x@�)y �)�������(�@��(�$@�p	&��(���(��Xׂ�(�T�@�Tע�(آ��f\L���̱T���)����Tע�(�~\Ă�(�@T�y �(x@�(w`�(v��(a��(c��P@��(���[��(���C���(� �(�8���8���G���(�L���S@@@��(���[��(���C���(� �(�8����8������G���(�L���Sy �(x@�(w`�(v��(a��(c�� L*���S@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)����d�(d��)�T��	&o@��9�:��($TTX�X��(�0@��(��\\��(=���@:��(]�\�$4�T�$E$�TE�T�$E�TE��T$��(���(���߫X�<PZ�(\��[D��(� �(�8���8���G���(�L���S@��(�kX���(�@�(���@�(���C�����(�`�(���CE�L���S@@Z�(]3�[D��(� �(�8���8���G���(�L���S��(�@:��(]S\��(\\�P@@Z�(\�XD��(� �(�8����8������G���(�L���SZ�(]��[D��(� �(�8����8������G���(�L���S��(��\\�PZ�(\+XD��(� �(�8���8���G���(�L���S��(�SX�P@��(�7X���(�@�(���@�(���C�����(�`�(���CE�L���S��(\�\T$TT����(�(@w �)v�)``�)`@�)��e��DT���8�@����O�Wd�(e��(�p\��(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L@@Z�(\O�[D��(� �(�8����8������G���(�L���ST@@@c��a �)v�)�����8���8���8�8������4TTD�(��	&�@�Tv�(a �(c@�P@@c@�a��)v��)w`�)x@�)y �)z�)�����(�(D�&Dz�(y �(x@�(w`�(v��(a��(c�� L�T٢�ڢ�(Y;\�z�(y �(x@�(w`�(v��(a��(c��P@@Z�(Y��[D�(�D���CX��D��(�\DC�(EC����[D��(�*�@���G� �(�8���8�D���(�LDC���T��TD��(� �(�8����8������G���(�L�w�Sc�a��)v��)w��)x��)y`�)z@�){ �)����(		@ qD���*)@ @� �(K�(Ke\
J�K�(� �(�Al� *J	@@5@
���J`�(M��������A*��A*���	@��0�(�Al� *k	@`5@
���K`�(m��������A*��A*���	@� 
DI`�(i�\@
@H`�(H�\H`�(H1\�`�(��(����LE�f'���(��)���@���TEH��(@���(�\@�0�(�A�8� �(�	a�(&� M@A�(PP���P���P���P��*�@&� DA�(P�(P��(��@�(��(	`���(��@�(��� �(�@
����(����)�@ �����)����{ �(z@�(y`�(x��(w��(v��(a��(c� L&��w�S@@@@@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����(d�)���(v��v��)v��)���e��)�t@���(���X�0T�H�T����(�D���(TÁ(��|�)v��)e �)�8@T������T4P��*�@�L@*DP������TT�"�T��T�C��T���}`�)���(�OX����d@�)8P@@@�TdTD\T�T>�(�X���(D��`a8�����@�������d�C��T[#�dT�T$�(���@�@����x�_���(�T�Á(� @�T�e@�(��T$Pd �(����`�T�T��(�#�(� �)��)d��(� �)e��(�#�)��)~��)e��(��j8���_d`�(��T���ST�7�S�Td��(|�(}`�(~��(��X������@@@���(� �(��(E#�)��)� �)��)� ��"�\�#���Cr8�@��$\��Td�r8TD^��_P� �(�T*���S��f��(Őj8��\���T��(e�(�D\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L*��ST@@@@c@�a��)v��)w`�)x@�)y �)�T��(��@�B���a8����@���������dT����d�$T��(�(@C�(c�(� �)��)C�C�)c�)r8��)$T���j8����D\r8�y �(x@�(w`�(v��(a��(c��Py �(x@�(w`�(v��(a��(c��P0dy �(x@�(w`�(v��(a��(c�� L��T�;�S��y �(x@�(w`�(v��(a��(c��Pc��a`�)v@�)w �)x�)�����(�T�(�4@�T���x�(w �(v@�(a`�(c����P������(�T�x�(w �(v@�(a`�(c��P@@����a8���@��������d L�P@@@c��a`�)v@�)w �)x�)������\j8����H\r8Ģ�(�@���W�"�(����Dl�"���x�(w �(v@�(a`�(c��PLdx�(w �(v@�(a`�(c�� L�@��\j8���\r8T���S��c��T���S�x�(w �(v@�(a`�(c��P@������"�\�#���Cr8�\�4�Pc��a �)���(��T*a �(c@� L@@c@�a��)v��)w`�)x@�)y �)�����T���HT�$#�T$�w�W�y �(x@�(w`�(v��(a��(c�� L@@@@c�a��)v��)w��)x��)y`�)z@�){ �)�����)��)�@��TD��TD��(E��(F�(G�(��(Ɯ�)F#�(G#�(���(Ɯ��)��[��Z��([WX@@@DC�x�TD�(E#�(FC�(�(��)Fc�(��(���)����Z�([��_�T${ �(z@�(y`�(x��(w��(v��(a��(c� L@@@c@�a��)v��)w`�)x@�)y �)z�)����T��*�@�tD���($T���($T@`�����T���(@���)�"�T����W$z�(y �(x@�(w`�(v��(a��(c�� L*���S@@@@c�a��)v��)w��)x��)y`�)z@�)����$�(d �)�(�T���x�)o@��(�d@�*�@�@����(�Hh�b�(���(��L�0D���`��(�P�@��f����T�"�T����W$�(e �(�(\D�z@�(y`�(x��(w��(v��(a��(c� LT@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)D�(����d�TD�(��	&D�(���eoX��������@P@@@Tw�(�"�T����W{�(D�(������eXy��$��Td�)dc�(���(��Dx�Tzc�(DTdc�(�hDT@P@@�\d�7*�@�@d�(���[~c�)DT$�0�T��(w���'\�C�S@@@$T��(�'�[���($T��(���o�C��\�S8*�@�@��(���[��)$TD���T��(���_���S*��S����d�T �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L@@@@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)D�(����d�TD�(��	&D�(���e�X��4P@T�"�T����W{�(D�(������e�Xy��$��T�dc�(���(��Dx�Tzc�(DT|c�(DT�`$�d�Tz��(|��\\�w�SZ�(\o�[Y��($T]�($T���cDC�� �T���S*��S����d�T} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L@@@@@ L@@@@@@@c@�a��)v��)w`�)x@�)y �)z�)�T�B�({@T�Ģ�(��@���(�0@�2�(�A���8� �(���`�(� @�@�($P���*�@�D�@�(P��(P���(���B�(���(�`Ţ�(C�(��(�"�(�B�(Ip�()�Ip�)��#�(�#�)��� �������Ă*�@�DDĢ�(��8\�b�(�@�(��L3�)���(���(ŔC�)�$@Ģ�(��P3�)���(���(��C�)��(D�c�)�"�($���)��T#�(��#�)Dp�(���Ep�)����DD �(�@�,Dz�(y �(x@�(w`�(v��(a��(c��P���ST���S@@@@c��a`�)v@�)w �)��(�@����T�B�(�J@��(�H@��� �\��!���Cr8������ X����GP(P���\�����,d���@֒T�w �(v@�(a`�(c�� L�T���S@@@@@���j8����$\r8�@�(�@��\� ���Pd L*���S�P@@@@@���P@@@@@@c@�a��)v��)w`�)x@�)y �)���(�@����T�B�(�4@�@�(�@�+X�@���T�(��_T�r�(�(@��(�@�����@�t�T�r�)y �(x@�(w`�(v��(a��(c�� L@@�*�@�D LLjE(�@(��@)���(���P@@@c@�a��)v��)w`�)x@�)y �)z�)���D����(�b�)����(���)�@�|@�(�@������(Y�(�$T�D$#�(�@�Ă�)�(�@���Y�(���($T�D$#�(�@�Ē�)�@�@#�(�LĢ�)D��� @�(�@������(���)�H�@��(Ģ�)�B�@D`�(��)��)z�(y �(x@�(w`�(v��(a��(c�� L@@@@@@c@�a��)v��)w`�)x@�)y �)�*�@�x@���`�($@�@�� ��T$@�@�� ��T$A����LD$H�\D$B�@��� ��T$��TDy �(x@�(w`�(v��(a��(c�� L ��T$H���C�� ��T$B���G���S ��y �(x@�(w`�(v��(a��(c��P@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)��)�����d@�)��(d��)�`�( ��&Tē����D�@�D�@�D�@�$D�#@�4D�A�DD�H�TD�B�dD�D�tD�C@�@���
Tw`�)ă@��lD�P��@C�(��@x �)�s���T`P�*� A�*��*�@A�*aA��*� A�*� �*AA�*)aA(!�A���h�W*� A�S*��[*�@A�_*�`A��G*� A�C*��K*�@A�O*aA�7*!A�3*%�;*)AA�?*JaAI%�'*J!A�#*J-�+*kAA�/*�aA�-j)(!���g*� A�c*��k*�@A�o*)aA'��A��A�(�Ģ�(�b�(�@@@@�������Eg�L�g�Ģ�(��Ģ�)�b�(��b�)A\�€(���€)�"�(���(����€)���-�`�(Ģ�)���(��b�)�0�G���{�G�'�SZ���C�����EfTĢ�(��Ģ�)�b�(���b�)���_�€(���€)�"�(���(���Đ�€)���-�`�(Ģ�)���(��b�)���S ��ET�@��C� ��T�@���C�� ��T�@���C�� ��T�#@���C�� ��T�A���C ��ET�H���C�� ��T�B���C�� ��T�D���C#� ��T�C@���G���S�#�(E�(��A��Ģ�(�b�(׀IP@@Z����b�C�����EfTĢ�(��Ģ�)�b�(���b�)���_�€(���€)�"�(���(���Đ�€)���-�`�(Ģ�)���(��b�)���Sx �(�D�P�����@������ǔ�b�)��Ģ�)���k�€(���€)�"�(���(�����€)���-�`�(Ģ�)���(��b�)���S�d��)e�� ��T�`��@c�(�l@��( ��Td`�(��*�@�@c�(� � ��T�A�c�(�@��T��(�,@c�(��(�A��P`��)e�� ��T$ē��@x �)�(d��)e�� ��Td��(�l@d �(� �(d`�(���(����z�� �@@����,�3h`��)$�Td��)�EfT�����_x �(Dē�(@#�(��(d��)�@`��)e�� ��TĢ�(�b�({��(�b�(0�@@@E�(�p8���L%���e��%FT�D�(�p8����L%G�Ģ�(��Ģ�)�b�(��b�)A\�€(���€)�"�(���(����€)���-�`�(Ģ�)���(��b�){��D9�[�Gd�e��(��d��)e��TP`��)e�� ��T�ē�@�� ��Tē`�(�@�� ��Tē�@�� ��Tē��@C�(d��)e�� ��Td��(�h@�c�(d`�(���(����z�� �@@����,�3h`��)$�Td��)�EfT�����_�`�(ē�@� ��T@ē�@�� ��T�ē�@#� ��Tē�@C� ��T ē�x@c� ��E&Tc�(�X@�C�(`k@d�(�@��e�T�B�(/@�(�H@�� �\�!���Cr8������ X����GP*�P���\������d����@TF�(����)dc�(��(d��L�)����dE�(���l�@`��)��e���Tsj8���(\r8C�(C���\#���T0P,`�TPT���H�GT�*�A�4D�#�(�,@�"�(�����a8�`���a8�����a8d@�(��(e��(�T\��(~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L*�#�S*$��S*�+�ST@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)����d�(d��)���(D@�D@T��(�H@���(�<@�2�(�A���8� �(���`�(�,@�@�(0PhP���*�@�D�@�(P��(P���(���B�(���(�`墂(�B�(������"�(��Ŕ��(�����(G#@F@�8D`@�)` �)`�)`��)���(���(�g��)�\D�F@�hD|P{@�)�B�(``�)`@�)` �)`�)`��)�g �)�h�)�(��g��)�D�P��(Ŕe��)�F@�@�"�(Đ�Ag���8��D@�`DDC@�@��(�Ag���8��w��Ģ�(�b�(�A�P@@��9� �@���%���TĢ�(��Ģ�)�b�(���b�)���_�€(���€)�"�(���(���Đ�€)���-�`�(Ģ�)���(F��b�)���Se��)�E@y���@eA�d8{�#X��(��\c�(���(�L��(��(��eA�d8f�D@d��)�(@�(�@������(�A�d8f�DC@d��)�@�(�A�d8��Ģ�(�b�(�A�P@9�{�`@���f��%FTĢ�(��Ģ�)�b�(���b�)���_�€(���€)�"�(���(���Đ�€)���-�`�(Ģ�)���(���b�)���SC�(��Xd�(��e �(�{@�(d�(e��(��\��(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L��(�@�������(�Ag���8��DC@���G���SC�(C�[s�[�~���d`�)P@@@Z�([K�[X��#XDc�(��\D#�(���(�LD��(E��(��d��)�d��(�$@D��(�@������(d��)f`�(d��(�@D��(�A�x8��Ģ�(�b�(�A�P@@@����[�C�����&TĢ�(��Ģ�)�b�(���b�)���_�€(���€)�"�(���(���Đ�€)���-�`�(Ģ�)���(���b�)���S��ST@@@@��(���(� �(�@H�(�	�P	�Ȝ\�� Lc��a �)�@ǜƠ�E*�@�@
��T�@������a �(c@� L@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)����d�(d@�)���(DE�`E_E���D���A��h��(���@�����W@�@$#�(��)��(����)�@@��hDP�0D`� @�b�)�B�(� ��B�)��(����)>��0@%��(D�(�@��<\T�"�)��)P�b�)�P��(��(� �(�0@F�(��	�$P�X*��@��D��%T�P	����\��@P�����E*�@�@
�$T�@�������"�)��(��(�����)�%��A���tI�B�(���B�)P���C�B�)�B�(� ��B�)��(����)`���G���S�"�)��)��(D����@@�"�(�@��(T��(�A� �P ����B�(�B�)�x��)D��\@�B�(�"�( m@�E*�E*����D*� �)a�( E@J �(�L�
��ED����(����ε�5�9
���,%h	\P ��PL,,��oL �(��`1D
J�J�(K�����J-J1�j�P*I��J��+�J�)-))
�)�)%	��)�
��G����)��)�'� ��@�@�)�
 �H!%���B�)��Ƃ�)���)���@���)���)��@
Ƅ�����)���)��@���)���)#@�@���)� ���)��L@�b�)D�(T�B�)�b�(�@���(T ��P ��B�(���B�)��(�h��)��D���D��@���(�T�"�)��(�p��)��@��(lT�B�)��(�d��) ���@�E*�E*���B�(�"�*�b�)�B�(���C��x@���(��D\� �(F`�(�@\��(�@����T�B�(�>@��(�P@��� �\��!���Cr8������(X����GP���( �@D �(������D����(����Ɣ�����$�h$T�t@����($��%Sh����(��ǼE�@�������(�̿�Ŕ����$h:�P�$$��oD�(���(��@` �)D�(0�e�)�8���L%�g �$ETH��\����(���E�@�������(����(�̿�Đ����<��%�d �(��� A� �(�@�D@��������j8���\TD�(e�(�8����L%P��)��(�x��)��0�C�tE�(�p	&��(��(���(���(��)���)���G�#�S���|����Ŀd����@T��(�@HP�����������������A�b�(�8A���������b�)�zj8���(\r8�B�(�B���\�"���T@P<`��T,P*$P*P�T���@�GT��b�(���@E�`D��(�d��)�B�(��� ��B�)d�(e@�(�H\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L*���S*�7�ST����G��(�A��C� �(�@���C������S@c@�a��)v��)w`�)x@�)y �)z�){��)|��)����(d��)��@�$E�(���(�@������e��džE�Ơ�(�8f@�)f@�(f �)��f �(f�)��ǐX�A�xD�ZE��ې��w��@@d�(d`�)d��)�A��D�LX��T���C��(d`�)�R��8AT�PP�P:�(f��(�D\|��({��(z�(y �(x@�(w`�(v��(a��(c�� L������dA���ST@@@@@@$���)ȈE(ƀE(Ơ�@�(Ŕ� ��@)��(�@����@���@)�@�D L* L@@@@c@�a��)v��)w`�)x@�)y �)�����$�(d�)$�d�)T��TĊE*łE*���B�(��� �d@)��(�@����@��e@)�@��D`��)`��)`��)`��)``�)`@�)` �)��d ���T�$Dx �e���TTT$�(e�(�(\y �(x@�(w`�(v��(a��(c�� L*��ST@@c@�a��)v��)w`�)x@�)y �)�����$�(d�)$�d�)T��TĊE*łE*���B�(��� �d@)��(�@����@��e@)�@��D`��)`��)`��)`��)``�)`@�)` �)��d ���T�$Dx �e���TTT$�(e�(�(\y �(x@�(w`�(v��(a��(c�� L*��ST@@c�a��)v��)w��)x��)y`�)z@�)�����D�(d �)$�d �)T��TĊE*łE*���B�(��� �d8@)��(�@����@��e0@)�@��D`�)`��)`��)`��)`��)``�)`@�)��d@���T��$Dy@�e �$��T$TTD�(e �(�0\z@�(y`�(x��(w��(v��(a��(c� L*�s�ST@@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)����(d@�)D�(`��)e����T�@�v �)��(����)e��(�T����E�(��	&�c�f@�)�T\���(�P@�����T�T����rT�c�(g@�(G�Xw�)v`�)6�(����HPE��(� �(�@f���FC�(�*�@�@���d�\��Z�(G;XD�(�����C0�D�)D��(��cD�jTg@�(���S��v`�(w�(�0@���(@@���)���(�����)��&���WP���vT�T�T�@@D�c�WP*��#��T�#�(E�(��\�c�(e@�(ŞX����@@@�(*�@@�D����_4P��(�X���W�\�T[e@�(�2X����S�T�d@�,@���(@���)���(�����)P�T��T�T@�o�W|�)�c�(e@�(�OX�~�������y��Կ$P@@@d`�(Te@�(��(�X�c�(���(���C��(�@����\��D��d`�)T�D��(���[P@����(�8X�`�(��C�A���(
A )8��(�-!�)�����S@���\�C�#�(���#�)d`�(T}��)w��)@@@���(�4�_r8�#�(` �)`��)~�)��){ �)&�Td �(���[���Sv�(�T���(�����)�T����Wv �(��(e@�(�`\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L�T����(��G���S*�T��ST@@@@@c@�a��)v��)w`�)����(e@�)` �)e �8�T� @��(����)e �(�T���(f@�(�\w`�(v��(a��(c�� LT@@@@c��a �)v�)�T���(�����)�v�(a �(c@�P@@c��a �)v�)w��)�����(d��)����(�$D����(�D����(�8@v�)��d@�)`��)`��)``�)` �)��e�<T�T��(e��(�\w��(v�(a �(c@� LT@@@c�a��)v��)w��)�����(d��)����(��@d����T�d��)@�� d`�)`��)v@�)` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e�)��(d �)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e��)��(d��)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e��)��(d��)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e�)��(d �)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e@�)��(d`�)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e��)��(d��)d�T` �)`�)d����T�8Dd �(���(���(�@�*�PE� E� ��P�e@�)��(d`�)d�T��e@�@T��(e��(�\w��(v��(a��(c� LT@@@@@@c@�a��)v��)w`�)x@�)y �)���(f�)����(��@�fp�)�4Ae�@)`��)`��)d �)`��)`��)`��)v��@����T%C���T�Tv@�)��`�e�@)� �d`�)��e �DT�(e�(� \y �(x@�(w`�(v��(a��(c�� LT@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)���TDp�(��Dp�) �@8c�(9c��X���� P��L@@�(�X��(���c3�(�XE`�(���_��(���C�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_���S����� �(� ��X���� P���L@@�(oX��(r8���C��(���c3�(�XE`�(���_��(���C�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_���SD�(��	&��@�`�(�`��X����$P��L@@@�(cX��(���c3�(�XE`�(���_��(���C�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_���SDp�(���Ep�)����DD �(�@�(D{ �(z@�(y`�(x��(w��(v��(a��(c�PT���S@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)v�����d�(d��)��( $��,@��8��8@*`��)`��)`��)`��)``�)`@�)` �)d��T$���$@�E(���@)���(d���O�W�@*d �e��T��D��(�@�������(�(�$T�D$#�(�@�#�C�)��(�@�������(�(DT�DD#�(�@�S�)x � �%Tf��TT�@)d�(e��(�4\��}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����(d�)����(��@`��)`�)`��)`��)��(�"�(��Ƣ�(d �)�DDd��)`�)`Ё)``�)`@�)` �)`�)`��)`��)�8Ad`�)e@�)v��)ۂ�(d@�@TD�(��	&��@�`�(�`�e�X �)}`������e@�) P@@Te@�({�(e�Xdc�(���(���C���(���Cd�(�@��e�������T����(���[LPI���	�)�"�(I����(+�)-J�))	!�)��@@@����(��X�`�(��C��(���()��(	��_��(�"�(	�Ȣ�(9Ah����(��k���(���k��m�(�-�i�o
�)���(J����(J�+�J�)-�k�S@@@�����Cd#�(��d#�)T{`�)z��)@@@d��(���_r8d#�(`��)`��)}��)~��)��)f����Td��(Կ���[�k�Sv��( �(Tۂ�(���(`��)`��)dB�@d7E�4�d[E�H�O@�����(�&T�`@���T�����Xl��@PĂ�(�@���(�@��L�D�T�H@�P��x��@�T{@Z�T���@�@��8���Se��zp�){`�)|@�)y �)}�)~��)d��)x��)Ƃ*�@�DFg�A(�f�A)����@)����(�@f��e���T��e�����W�T��(e�(��\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L���(���(���*��(���(�@�*���PE���S��(�B�(� �(�l�"�(��(�l�����S�@�(�l�����S�"�(�����@���������g�ST@@@@c�a��)v��)w��)x��)y`�)z@�){ �)v��������d�(d�)`��)`��)`��)`��)``�)`@�)` �)d��Tx�)y��)z��),��d��)�
*�@�D��$Pd���E(����@)���(d���g�W�d �e��T�0Dx �e����Tf��TTd�(e�(�,\��{ �(z@�(y`�(x��(w��(v��(a��(c� LT@c�a��)v��)w��)x��)y`�)v������$�(d@�)`��)`��)`��)`��)``�)`@�)` �)d��Tx�)4��d��)�
*�@�D@�$Pd���E(�@��@)���(d���?�W�d �e��T�0Dx �e��@�Tf��TT$�(e@�(�$\��y`�(x��(w��(v��(a��(c� LT@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)	9�)�(i��)	)�)�( �@�)�����J�IAl���*��D��)������T*�P����`@�)v�����T��T�T���@�@���X8���Sz�@)}�@){��)|��)D�e`�)v �)d@�)�`�dx@)`p@)��e ���W$�(e��(�0\}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)v�����D�(d��)��(@$��@@�`��)`��)`��)`��)``�)`@�)` �)d��T$��$@�E([@(��[@)���(d�����W[@*d �e��T��DC�d �`�Td��(e��(#�(�(�P@�{�`{@���f��&Tf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(��e��)���Sx �f��TTD�(e��(�0\��|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)�����(d@�)����h�)�hf�)e@�)v �)` �)`�)`��)`��)����(�@���(��(g��)�,@d��d��)dx�d��)d@�(����@d��)y@��D�d`�)��| �xP@@@e`�(e`�)y �)`pA)d@�)�`�e��(�@)d�(d�A)}��)w��)d��(e��(�@)d����Wg��(���(������(��8l��(���A�8���(�@�(���(��(���C`@�)$FT���$FT$T@@���@�8�C���d8���S�@�(���(��(��@`@�)y@��$FT��$FT$T���@�$@f@�(@���d8���@���GPf@�(e�(e�A)w��)v��)D�e`�)y �)d@�)�`�dxA)����@d�A)`pA)��e ��o�Wg��(����(v �(e@�(f�(�T@���(���(d�)fB)eB)H��d��)` �)g��)�P�d � �T��e�����W��(e@�(�8\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� LT@@@@@c�a��)v��)w��)x��)y`�)z@�)v�����$�(d �)��(�D���@�`��)`��)`��)`��)``�)`@�)` �)d��TD��$@�E(;@(��;@)���(d�����W;@*d �e��T�0D#�x �`�Tf��TT$�(e �(�(\��z@�(y`�(x��(w��(v��(a��(c� LT@c��a �)v�)	6���(i��)	)�)�( a@d��)�d�@)P�d��)g@�)e �)`��)h�@)�f�@)�,���@�f�@)�����d`�)��e ����W��(e��(�\v�(a �(c@� LT@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)v�������(d��)`�)�D��($���@�`��)`��)`��)`��)``�)`@�)` �)d��T$��$@�E(�@(���@)���(d�����W�@*d �e��T�D��z �@�DTc��DfTk�D%fTd��(e��(c@*�(�P@@Z����{@���ƛ�EfTf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(��e��)���S;@*#�(P@9�{�`{@���f��%FTf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(��e��)���SC�(@�@x�P�Z�@{@���F��&Tf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(��e��)���Sx �f��TT��(e��(�8\��~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@���(�@����) L@@@@c�a��)v��)w��)x��)y`�)v������$�(d@�)`��)`��)`��)`��)``�)`@�)` �)d��T�(w�)T��e��)�@����
*�@�D@�$Pd���E(�@��@)���(d���+�W�d �e��T�0Dx �e��@�Tf��TT$�(e@�(�$\��y`�(x��(w��(v��(a��(c� LT@@@@�P@@@@@@c��a`�)v@�)w �)����8�"�(�X\�B�(���B�)�T@����(�Dl���8���8���B�)��eT�P��B�)�"�)�*�@�4@T�b�(�b�)�����&�����h���(���mT�w �(v@�(a`�(c�� L���P@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)�����(d��)���(��(� @������W���(�x@w`�)y@�)x �)���z8���z8��DT���(�3@$�T@���(�#�d ��L�PT�z8����z8@O@��r�)���0@�����j8���\��r�)���)���TV���(����@��@�@��(�@��P\�S@#�(ǀE������ ��璌(�0@�@@���8D�4X*,P��G�璌(���G撌)��(�`����a8��)�@$*� @�@$��(��)���T�B�(�%�L��(�@�����@�(�@�r�(�@��b�)���T��(e��(�T\���(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L���S�z8����z8���STT����(�#�d ��L�T��(�����a8��� ���a8��S@@@@@@���(���(���)��(��9`��#����"\,�#���Cr8��_ L L@@@Dp�*��������������Đ������,���(�@���� L������)�� L@@@@@������,���(������) Lc�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)v�������(d��)�\@���d��fT`@�){�)@@ �d�)z��)�T��D8��@;�k������pe��f}��, ����E��_����@��(��@��� �@�z��$c�(�\\$��(�T\$�*�@�HD$�(�@@�@��(�@�0X��@�@��(�@�\$F��T@$��(�@���?��GT��(e��(�@\��~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L*���ST@@@@c��a`�)v@�)w �)Hp�(�Hp�)Hp�*	�
�
����j�)���V����Ȣ,	��( )D��	�	�)T��Ē,���(������)Dp�(���Ep�)����DD �(�@�Dw �(v@�(a`�(c�� Lw �(v@�(a`�(c��P@@@@�� L@@@@@@ L@@@@@@@c�a��)v��)w��)x��)y`�)z@�)v������D�(d �)d��&TC�(y�)`@�)�@ �e�)d��)��(�PD�:@�(�@@�@��(�@��0X��@�@��(�@��\�f��DTD�(e �(�(\��z@�(y`�(x��(w��(v��(a��(c� LT@@@c@�a��)v��)w`�)x@�)y �)z�)������a8�H@��(�@@���*�@�@*�@�D�"�)(P��(�"�)��T\��(�L\*�@�@DC�(����X��z�(y �(x@�(w`�(v��(a��(c�����S���a8Ŕ��`��(��(��)�(�`��#(���"\,�#���Cr8��_C�(���XX�Th����W�<D:��@7@�@@@%�����W�DZ��_��Gz�(y �(x@�(w`�(v��(a��(c�� L@@@@c��a �)����(���(d�����Ta �(c@� L@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����T��d�)�T�"�)п�|@�����)D���(�@��@_@���)�d���$�����T���` `�\��)���*�@�b�(��@�� ��T�B�)�<@����������(���0P@@�r�)����)��%FT�"�)d���*��T�����(�ll�A�8�B�(�8���B��B�)�b�)����)��)������)���)�B�)Ă�(�|�Gd�(Ă�)�s�SX�P���PĢ�(���(�l@�,@Ģ�(�<@�B�(�H@����(�"�)��)r8��)� �)�b�)�P�b�(����hT�b�(TXHP��@���"�)����)�����)Ģ�(�x�G�P��T��D�C��(��T�"�(T��T� �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L���"�)����)�����)�����)Ģ�)Ģ�(���G��Ģ�)�B�(���G���B�)���S��)��T��*�7�S*�C�S@c��a`�)v@�)w �)����@�(���T�b�)�|@Ţ�(���)T�b�(���)���b�(���)�b�(ł�(��)���b�(��)���(�b�(��T��D�b�(T��0@�b�(TPп��w �(v@�(a`�(c�� L���(� @�b�(T�@��b�(T���S���S@@���8��h� �(�8���8�@ L���(�L@@@���8�8��h� �(�8����8����@ Lc��a �)���(�La �(c@� L@@���8�8��h� �(�8����8����@ L���(�L@ L@@@@@@@ L@@@@@@ L@@@@@@@ L@@@@@@ L@@@@@@c��a �)v�)���T��(�"�(� �)��)���"�)��TT�"�(T��(��T���*�8@�b�(����(hŒ�(�@��T�b�(T�b�(T�B�(T��v�(a �(c@�Pc��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����(d�)`��)`��)��	<�(Mh����w�� ��T����T�Dd��T�D@��(f�(��\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� Ld��(��@�LD����(��`��T�DT�T��@d���T�@���w�Sd��( ���@��T�DT�T�<@e �(d�*�@�Dd�H&�(d�'�S����(d�H&%�ke@�(�� %@d��l�T���Ge@�(d�H&	���,@d�T&H��d�@����S�@���@����[�����[� @�
������dT�c�g��\Xe����H�T���De��(� �(&'@�@���A��Iݔ P̿��S̿���Sd��)D��$X�"Dd�T�������jh�$P���D�����d��'	
T�������h��P�``�)dP�@ @$�(e��(���@��D��d�����'	
�T��l�vDxP��d`�)�b�(��(�@�*�@��Dd�*�@�@eP�(��T���D�s�(�e@�)�\��(����)d`�(�t@Ă�(���T���Dd���T�T�$@���T������h#�d �)T#�(�|\�P�����Wd`�(��D�P��XT�������l#�d �)T#�(��X�2�(�A���8�������(��@x�)@�@��$C�(��\�"�(%#�(��\�2�(%3�(��\$��(e�(��\d�*�0@��D�*�@�PD$*�@��D�P���P��P̿�P���lPT$��(��(�p�(����@�����e�(��T�������h�P���)�@��l�T���D�ܙT��@�*�B�D�"�(�@�%8�T��@�e�(�T��@d�(���(��D�����gT���l@�@$�G�W$��(�T$C�(�C��0\;C�(<C�|+Xd����Wd��(pT{�(|��_$C�(��X>��)f@�(D �X�E!���CPr8���@$�*�@�$��)&3�(d�(%TT��bT�$�TD�(��)�2�(y�($�(T$���Wd �(Td`�(�@Ă�(���T�|#TD�(`���TD�(�������B�� �(� �)�B�)�b�)��)D�(��Td�*�@�@d��(Tv��(�T���S�P��P�����(0T���)y�(d �(T$���W$���Wd`�(�D@Ă�(���T��W�W��"Td�*�@�@d��(Td��(T����S��#�W���S;C�<C�(�W�[���)f@�(D �X�E!���CPr8���0@����Ã*�@��c�)��(d�(�T��(���_���S*���S$#�*�@$��(��(�p�(f@�(���[��_���S*�S�S*���S@@@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)���*�B�pD
���F�T�������l���)�`�(es�(��\��(����)�D�PT��h�xP���P��(��D�"�$T�"�(� Xd���T��h�P��$T�T���(�����)�T��o�W����"�\�#���Cr8��\��aTD��} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L����)@D梃(��@�`�(�*�@@�H@�b�(�b��<X��P@��(�(X�`�(&��_�0�(8EX�0�(J�X9XI��_0P�0�(��XT����W$T��K�S���T���)���S���(���T*��S*���S@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)X:��������(�$l�CD�%��(���,@��H	P�����?	\�;	@k`�)�d��)8P�d��)k`�)�'`�A���8���8P������(���T�@�w@�)�@�����T������)���)��)�"�)�B��B�)�b�)������)Ă�Ă�)Ģ�)�b��b�)Ă�)������)���)Ģ�Ģ�)���)�"�)���)���)�������T���b�)����)���)���)�"�)Ģ�����T����)�2�)��)�b� ��%T�@��������"�)�b�)��)e��)�B�)D�(T���$X���|a8����@�������d���)�����j8���)�����)`@d�(��)d��(�4@�IJ�)�C���a8����@������{d�"�)���"�)`@d#�(�"�)@Dxc�(zC�(@@�b�)�B�)��(<Pп�P��(���D�b�)��P�b�)���B�)�@�Ģ�)$C�(�@���&��(�P�@������)���)���)�@�@$c*�@@��Dh�)��*� @�D���)y��)} �)��T��b�(�B�)��(� @�`�( @$�8�T�@��(�����X�4DĂ�(��E�'@��Ă�)�P���"�(��D�P�����@@T��d�T�T K@�X��(���X$*�@�,@$���T�P\��(��������G<P����@@@9�(8�X$�@�T���[�@��D#l��ET�����} �(7h7�Pd��(��d`�(���@Ŕ�D%s�(���\���P�*�B�@%*�B�D���P�4XT��G@���(��T��0hD@��Dd��pD�P�;�S��3�SܿTPx`�)z��)|�(`@�d����(���G{@�)d@�(��(���Ae��)��������e`�)�e��)пe �) PDTdTd@�(��(�������T���d@�(��(�dl�A8��F�(���gd`�(�8d��(e��(T��@�DTD�(���g\�)D�([�)E#����@���g�Sw@�(���)d��(���(��X�R*�@} �(z��(x`�(�LDT�B�(�@�pDEp�(��Ep�)����a8Dp�(���Ep�)����DD �(�@�dDT���)��D@�<�C$P{ �(P} �(z��(x`�(D@��CTd��|D�b�(�*�@@��@IJ�*�`�(�@�@D���`���L`���� %\�!���Cr8(�%AX���S���`����`��� %\�!���Cr8(�%��_�b�(���(�X@$��*�A�T��)��@��(�0@����T��(��(��(&��*�AT�T��"�)��(�$D��*��@�@d��(��A*T��LD�T�@��(�$@�0P�`�T��Pп P���*��@�@T��(T��_T����(g@S*�@�TD�TC�(�@�$DEp�(��Ep�)����a8Dp�(���Ep�)����DD �(�@�DT����)��b�(�@��L$C�(Th�(�"�(�$@�@��tj8���\r8TP�dĂ���T���(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L*���S�>���T$��7�S�T����S��T�o�Sc�(��j8���_C�c�(� �(�L���ST���S�b�(��j8����_e@�(�@��`�(� �(�L���ST���Sc�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)���$�(d��)w@y@�)``�)C�d��)���D�e��)�d�d`�d@�)��d �)�d�)��пd �)��d��)������Կd`�)��d��)$P@@@�T��DŽW@oDe@�(�eT�Dd �(��(e�(�T�<@���)� �e��(�TĢ�Ģ�)���)�b��b�)Ă�)�B�)�"�)��)���)��)e��(�da8����L@�����%f��(�4d�"�)�TS�*�@�_?�Gd��(��({`�(�,�GPd��(T���S�����(��`��T�DT�T��@�b���T�\@��4P����(�@���)���(�����)��(����)e`�(�T��g�W�Pv �(�Pv�P�2�(�A���8�������\a8���@���������d�T���(����)�T|P����a8����@�����y@�(g��(�d��(����)r8d��(��)�T,P���(�����)��(����)e`�(�Ty@�($�(e��(�l\���(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L̿�����S��T��S�y@�(T�G�ST@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)���� �(�<@�����(���Tп��@�D�*� @�LD\PD3�(�A���8�B�(�T�$#�(��@�p\$C���a8�P��(�(@�T��@C�C�)c�)����)��)����)��)�)�C�)�TŢ��@@@��(�hX���(���_���(��\������la8@oD�P�$C�)$(��$)$C�Ţ�(� �)Ƣ�&c�)%C�)Ģ�)6#�)�ThPĢ�(� �)c�)C�)٢�)#�)@@$��(�D:��)�ҁ(���ҁ)�T@@��(�@ETT${ �(z@�(y`�(x��(w��(v��(a��(c� L*���S*��S@@��`�(�*A@U@�`�(�`�	IX
��P@@�(	1Xa�(���_�0�(j-X1�(���!X���_� L�� L L@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)��)����$�(d��)�"�(�`�(�*�@@�D@�b�(�b��8X��P��(�(X�`�($��_�2�((X�0�(J�H	XI��_*�2�(���X��\r8���)�B�(���(�`䢂(���Xy �)KD`��)`@�)w��)��d`�)�d��)��h@���T@P�Xr8��Կ���z@��@@@w��)~`�)|��)x@�)#�(�`�(%FgT�@��f��(�����\T���S@����@�T�"�(�XT��@�T���SĢ�(���C���(���G�T�"�(�X���T$�(e��(��\���(~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@�P����T�Td �(��(e��(�P\��(~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L*���S*��S*���ST@@@c@�a��)v��)w`�)x@�)����(d �)�"�(`�)�B�f��T�h@�B�(�B���X�b�(� �)��)�B�)�b�)�"�)Ă�(ł��h\���(����d\e�(�T�*�@�D�b���T�(e �(�8\x@�(w`�(v��(a��(c�� L*��(��S*���S*���ST@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)����A���8�A�8��f`�)��(f@�)������8��"���>#��c�{�{ �){�)T~ �)��}@�)�c�T����EgT�"��z��)EgTd�(��XT�(��X$�d��)��d��)���d��)��$P$����W��OzW���X��(�����(���[�#�(�#�)��)d��(�#�)��)�c�(e��(�\a8��e��(�@@������D/d��)d��(%����W��)�c�(�p�c�c�)�k�Sd��(T���S|�(��X��d��)$P$���W�W���yW���X�#�(��(�#�)��)d��(�#�)��)�c�(e��(�\a8��e��(�D@������D3d�����)d��(%��G�W���)�c�(�x�c�c�)�s�Sd��(T���Sd �(Td@�(Td`�(��(e@�(�8\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� LT@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)���(�@� P@@@� ����(�`@�p�(�d��@����(���G@P���c�@��(��(���k���k��(���C�(�@Ɯ�����S��@�@� �@����P@�h\�@� c@:��(DTDÁ(� @DT$�T P��$F0;TDT$��(���W$C���(� �)%C�)6c�)��)$C�(� X;3�($��(��@��(�P@@=C�(>C��K\���SDTd�T���(�w�W����(� �)��)�#�)��)��(���[�c�(DT���DÁ(���G��dFh:TDT���S@@$��T�0@e��p�(�$\�@��(��(�\��(���C��(���[~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L@c�a��)v��)w��)x��)y`�)z@�){ �)|�)���D�(d��)���g��T����	&�8X@@@� �(��(� �)��)��)� �)r8�@�)����_�TD�(��\` �)e ��|VT�����@��(����)e �(�T�"�T�T�������(�@��\��\T��	'��uW���"�)E�(�@��j8����\r8�T���( D\PHd���( S@��)���(�����)�T$��tWd�(�dD@P*��S*�{�S�T���(?��G���(�����)�Td�(�$D����(�D����(�8@`��)`��)`��)v �)��d`�)w@�)��e ���3�W�b�(�b��X��(�xVT����_T���sWd�(�$D����(�D����(�8@v �)��d`�)`��)`��)`��)`@�)��e ����WD�(e��(�,\|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)�����(d@�)�	&��@���D��"��T�T �)���"�)C��xj8����\r8TP�d�T�b��b�(�X��d �)@�(:�(@�@[C�dT$��(%��(� �)��)$��$��)$��)dTD����j8�\DpBT�T$�9T$��>T�T$���"�\�#���Cr8�\$$BTc�_$P*���S%��(d �(&T*���S�TT��(��X���T�` �)`�)`��)`��)`��)`��)``�)`@�)d@��Ty���%T��(�(X�@T%FT��(���_%T��qW��(e@�(�D\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L�T�'�ST��@����j8����\r8�Pd L�P@@��	&�D L* L@@@c��a �)v�)Tܿ� @���(���XTP��v�(a �(c@� L@@@@@@���(���X�� L� �( L�@�`������� L@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�)������(d �)��	'����g�����T�����	'� �)D�(�~�)��	&�DD��(f �(��\~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L���W���C�� �T���T�<@�@�`7@z�d�&G|�T��Dd��T�@�@���G�T���)�T�"�T�<@�@�`7@z�d�&G �T��Dd��T�@�@���G�G��T���)E�(�H@d�(���<@��(�@������������)�8���)��mW�%TP�T���W���mW?{�C�T$�o�ST@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)���A��d8����W#��To-D��(��D`D�(�<D�Ad8���8�����(�@�T��@r8D�)�T���T���A�����-���c8$�(����6#��T8��)�T�T{ �(z@�(y`�(x��(w��(v��(a��(c� L*�g�S@@c@�a��)v��)w`�)x@�)y �)z�)����T�A���8����#�$T����GT��)$T���A�����-E����b8�Tz�(y �(x@�(w`�(v��(a��(c�� L@@@@����(�$@c��a �)��Ta �(c@� L L@@@c��a`�)v@�)w �)����(�@�Tп�4@��� ��T�"�)�@�P�T�w �(v@�(a`�(c�� L@@c��a`�)v@�)w �)x�)y��)���$*� A� *��(*�@A�,*aA��4*� A�0*� �8*AA�<*)aA(!��(h��)�A��*� A�*� �*AA�*)aA(!��(f��)�*� A�*��*�@A�*�`A����A�d��)����(��@` �)���(���(d`�)`P@)L�d@�)�����(�&T�� @���(��T�Pw��yX�w�)�T@@���@�@�8���S�@�%@)d �)��e��#�W�T�(e��(�$\y��(x�(w �(v@�(a`�(c�� LT@c��a �)v�)�� �(T�v�(a �(c@�P@@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)��)�����(d��)` �)e ��T��@���Կ���y@��{ � P@@�eT��\@}`�)��)w��)w@�)@@@�"�(�`�(&GT�@��f��(�������_T���S��(e��(�8\��(~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� LT L@@@@@@c��a �)����T�Da �(c@� L����(����(����(��a �(c@�P@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)�����(�(�@�(�Ģ�(��\Ģ�(���\Ă�(Ţ�(� �)��)Ă�Ă�)Ģ�)�b�(� �(�8���8�D���(�L�b�(�`�(��L����"�)Ƃ�(�P@���)���(�,@���(� �(���� �)��(�����)����D���)ƒ�(�x@���)�PŒ�(�\@���)Ƃ�(�@Ƣ�(�`���a8@Pۂ�)����"�X���#���CPr8��@D�(�B��TY�����T�*�@�D$S�(���$S�)��(�P�(@Ţ�(� @��(�����)3�(���3�)��(� @�D$S�(�D c�)�b�(� �(�8����8����(@{ �(z@�(y`�(x��(w��(v��(a��(c� L���({ �(z@�(y`�(x��(w��(v��(a��(c��L*��S*��S@@@@@@���(�TX���(Q@���(�$@�0�(
A	)�(!8� �(�PA���(�@�(頂(*))ʨ))
$)�@�(�j)i���()��@�)��)� �(�� �)Ɣ���`�\�@�(�@�ǰX�PP@@@J�(��(,�J�����(J���)���)�-���(I����)��(�XX�`�( I@ʀ�(@%@���()
A	%8J!�()�P@@)A�)�(��(J��(@��c�`�(�{�S	���S���) L���S@@@@@@@P@@@@@@@���(��@���(�$@�0�(�A���8� �(ŔP�@���(�@�(Ơ�(�`���(�@�(��������(��@�)��)�� �(Ŕ� �) L���S@@@@@c@�a��)v��)w`�)x@�)y �)���Tע�(����(�@@��� �\��!���Cr8������X����GP��`��%;d�T��C�"�TĢ�(�$XT��SaW�o�ST���S�y �(x@�(w`�(v��(a��(c�� L@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)��g��)��(g��)���(#�(f �)f��)e@�)e��)d`�)d��)���X�ODd`�(�0�(``�)`�)e��e@�)��e �)�e`�)��f��T�Pv����Կ���{��v@�)w �)y`�)�)�#�(�`�(Ef�T�@��f`�(�����\T���S@���H@T#�(�3XÁ(�@T���Sd`�(g �(h@�(LTd��(��(e��(�8\��(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@@@@c@�a��)v��)w`�)x@�)y �)z�)���(8��(����ׂ�(�T�@�T#�(�@E�(� X���BDDPX*PÁ(�\@�b\GC�(H#�($�L�@�T�T�z�(y �(x@�(w`�(v��(a��(c�� L*���[*���S@@@@@@��(�,@� �(�`�(G`�(�\���`�)F�(�X Lc��a �)v�)�@�(� �(���L�b�)v�(a �(c@� L@@@@@@@c��a`�)v@�)w �)x�)���(����RX�,P@@���(� �(�8���8�@��(�"X���C��(���G���S���(�L���Sx�(w �(v@�(a`�(c�� L@@@@@@@����ƀ�(�@�\(P L* L@@@@@@c@�a��)v��)w`�)x@�)y �)z�)�������(���(�<D���D� �(�@Ă�(�Dz�(y �(x@�(w`�(v��(a��(c�� L���@��L@��T%c�(��&C�(��$c�)%C�)��$��)���@�hTE$&Á(���@�@Ɯ���)� �(�@ǂ�(�l\���D���)���(���(���K�[�@@����P����T�('�[_��C�(���G���S*� �(��G��S*���S*���(�����G���S@@@@@@c��a`�)v@�)w �)x�)���(����bX�0P@@���(� �(�8����8����(@��(�.X���C��(���G���S@@@���(�L���Sx�(w �(v@�(a`�(c�� L@@@c��a`�)v@�)w �)���(�Z@�TP@@@��(�:@�"�(��� �(���8��8� �)��@�)���C�`�)���Sw �(v@�(a`�(c�� Lc��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)����(� �(#�(�@Á(�(@ �@�"�(�8���8�0@$@�<D�P�B�(�����(�@��\���)?��GPP���(��L$@��@���(�����X�P@@�sX���(�#�(���_�C�(��(� �(�8�D@ڃ�D���W���(���_���(���^��[@D���k�WZ�(^��_���S*���S$@��@���(���z�X�P@zsX}{�(�#�(���_�C�(��(� �(�8�D@���$���W���(���_���(���=��[@$�����W9�(=��_���S*���S�)�"�(�8����8����4@~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� LŢ�(�~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@��L*�?�S@@@@@c@�a��)v��)w`�)x@�)y �)z�)���(�$Dz�(y �(x@�(w`�(v��(a��(c�� L�����������(�@��4D��T$c�)%C�(��$��)��TE$&Á(�����)� �(� @���@Ƃ�(�X*PĂ�)�@@���(���
@�@������T��@�0�C�� �z�(y �(x@�(w`�(v��(a��(c��dP���(�D@��(�@@�@@@� �(�8���`�(� �)��@�)�`�)��(���G L*���S@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)���D�(d@�)����(�SX���y0�,P@���(}0�)F`�(�(hT��(�X���C��(���G���SD�(e@�(�0\}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� LT@@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)������d�(d@�)��(�@�%�L�0D` �)`�)#�(��@E�(�@���P@5X� ����(�\@�p�(���g��@���(���G<P�@��(�(���k��k��(�?��C(�(@�� ���Sx�E@A��<@d�)��8D�P����E�(���(��(�D�P��@P@@� ����(�`@�p�('d��@����(���G@P���c�@��(��(���k���k��(���C�(�@Ɯ�����S�@�@��@�A8���@ �@�P@@@��(��@H�(��C��(
@@I
q�(*d*A��(��G�PY!d!�*�(��G�P@@�@
�(J�(���kW��k
�(@U@K�(j�J@,�
)J1���Cg��[��Cj��(J��(���(k��(j�J@���(J-����S
�t�G�_�S@@_!�CGA���C��
A#8����S����@�(���(� �(� �(�(@��(�@�(�����(�@�\���)�(���(��(� �(�8�|@���`����P@@�d�����A�$]d@@J�K�k
A/8,��
A38�!�(k!�(k�)�J-K%ijA$��cP@@@�)�)@k�J�I%*-K���im�[�A/8l!�(@@@M��
A/8�!�(�!lJ��K}�J-JII��_�+�S@�!�[/8@@J��M}�J5JIM
A7878/8�I��_���S�lDd�(e@�(�\\}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L*��(`���S��)��T*�����C�(�T���G�(���(�@��(P@�0�(���T� @���p�(�\��@��(��(��X�@�@����)���h@�D`���	�)
A	'8��J
A
+8J!�()!�()�Ƥ%	&(A���c�P@@@`���(�@���C�D�c����c- �T�Dh��@@�����A8��
A#8!�(� �(�������A���c�P@@@	&���@'������X�C� �(���A#8!�(�l����|�� �I���k��� �C�A8@���	}�%I	
A
'8'8
8��G$��o���S��(��@��(�P����@����������C�(� �(@@���A8� �(�l����|���I����k���`�C�A8@����|�� �I�A	#8#8	8��
�&�H��k��S���@��o�S*�G�ST@@���(�``c�a��)v��)w��)x��)y`�)z@�){ �)|�)���(�0�(���XH`�(�\���(�D@�����(�@��(�@�(�(
A�(I�\�@�(
A�(I�`(!-a�(�\� *�@��pD���(��(�@�(���`�(�D��(��(	!@ A@@@���(*��J�+��k!j)��k����!-(!8
�\���@���(���(�X���(��(���L$�hT�hD�B�(� X�(�L�p@�0P��B�|��(���[���$�T����C�@�(��X���#�W#�(�L�E���(��DTP����(E��(�@�@���	��&� �� �(���� �)���)���)��)���(�0D��)�*�@��D���(����)���(��(�@�(��ws��T�d��(�DDy��)dC�(���(y��(�L�z��D&Te�(d��(��(�DT�T��"�(��@���W�T�B�(�|\�B�(�B��rX��(�D��(���_\P�������W�T��(���_<P���(�,@���(� �(���� �)��(�����)����D���)�����W|�({ �(z@�(y`�(x��(w��(v��(a��(c� L��B�(�B�|#�[d����[��;�W{�(|��_��S@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)v������d�(d��)���(��(�@�(���(�l\䢂(�p`D`�(�"�)r8�����W�B�(����X�b�(� �(�8���8�D���(�Ld��T��(�@����$c�(�*��@�,@$�*�@@� D`��)`��)`��)`��)``�)`@�)` �) d��)0�d��)$�(�@��%����(Z�(�DT�DD#�(�@�d�)$�(�@��%�Z�(���(DT�DD#�(�@�d�)$*�@�D@�$Pd��%�E(�@��@)&��(d�%��TWG�d �e�&T�0Dz �e��@�DTf�$ETDT�b�(�@�(��%�L�$@��O�W�"�)Կ`P���*�@�D�P�(���P�)��(�P�(@��(� @�(���)�3�(���3�)��(� @�@�`�)�b�(� �(�8����8���� D���(�LP*䢂(���gd�(e��(�T\�����(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L��T�B�)�_�STc�a��)v��)w��)x��)y`�)v������$�(d@�)��d��)�"�(�Ld��)��(�@�������(d��)���(d�)@�d��)`��)`��)`��)`��)``�)`@�)` �)d��T�
*�@�D��$Pd���E(����@)���(d���GRW�d �e��T�0Dx �e����Tf��TT$�(e@�(�$\��y`�(x��(w��(v��(a��(c� LT@@@c@�a��)v��)w`�)x@�)y �)z�)����(���$Xz�(y �(x@�(w`�(v��(a��(c�� L���B�(���(�@����W��o�W���(�4@���(� �(��� �)�(���)�DD�(�p	&��(��)Á(�x�C�2�(�XE`�(��\���(�D@�������(��@��(�@�(��(�@�(�\�@�(�@�(�`�-�`�(�|\7X$��(��l\ł�(#�(�@��\��(� �(�@�Ɛ(����B�(��(�@�@���z�(y �(x@�(w`�(v��(a��(c����*S�z�(y �(x@�(w`�(v��(a��(c�����S*��S@@��(�D��(�@ L���(�\���(���(
\� L���(�\���(���((
\� L���C��_���(���(���_� L@@@@@c��a`�)v@�)w �)x�)���(����NX�P@@��(�6X���(�@�(���@�(���C�����(�`�(���C��L���Sx�(w �(v@�(a`�(c�� L�Ё(��@c@�a��)v��)w`�)x@�)y �)���(����zX���(���oX@@���(��(�L\���(� @������L��(�&\8P@�b�(c�(�b�)c�)��(�X�(��_P*��(���_y �(x@�(w`�(v��(a��(c�� L@c�a��)v��)w��)x��)y`�)z@�){ �)����(�P@�T�b�(���B�(���b�)�B�)��Ă�)�b��b�(�X�b��b�(�X���@@�*� @��@Ģ�(�\�b�(���(��LĢ�(��@���(�@�2�(�Ad8� �(��P�@���(�B�(���(�`Ţ�(�B�(�����ǜ��(��B�)��)��"�(���"�)������(��i8���)��(��(��)��)�"�(�"�(�"�)�"�)�T�T��(�X��(��_P�c�S{ �(z@�(y`�(x��(w��(v��(a��(c� L@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)��(d;X�����z�����0PD%8T�d��(���(D�L{�(v�Xd#�(���_d��(�XE`�(���_dC�(�<@�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_z��d��(�<\`��)D����Wd�*�@�@d#�(�Dd��(���(D�Ld�*�@�T�Cd#�(�L�Cd��(���(D�Ld�(eC�(e�)����g��S~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L@@�$�	��@*����(+%�,@l��$�
x��5wK��@ѽ�������3�h��ovh
x�K�@@P���0dJ���EP@@���)E����0d���kEP����E�9E/`�)��cP.R@%��9/%df��PDPP���kE�9�E	��g����I��g����E���S.��Gf��)o�d%��@�#���(Ɣ����I�EƠ�IŔ�Ȕ� Ơ����)��(�A��d�|@c��a �)v�)�`�(���(���L��)�b�(���(��v�(a �(c@��L@@���)E�)�EQ�gK������gJ���E���S��) L@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)v����������(d��)=��(��*�@�l@Tc�(��C�(��c�)C�)����)���(`C@T@@e#�(��� �(���8��8� �)��@�){�(��G^@�@�$��)$���WD@�@$TD@��@$��*�A��@����$��)?�(�@$*� @�H@$��(� �(D���4h`�@) �d��)$�E(�@�d��)d�@)���(�DT�DD#�(�@�d�)$�(�@��%����(DT��DD#�(�@�`��)`��)`��)`��)``�)`@�)` �)d��T{�)$*�@�Dz��((Pd��%�E(z��(���@)&��(d�%��FWG�d �e�&T�<Dz �e��@�DTD%��TWf�$ETDT$��(%��(�������a8��%�(��a8�#�%#�(��a8$��(%��(� �)��)$��$��)$��)$T�@�$��)��(�P@��(�|@��(e��(��\����(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L�Á)#�(���CÁ(���C��(�@�(�����(�@��\���)���SÁ(���CK\��( C@T@%#�(��� �(���8��8� �)��@�)�`�)9�(?��GÁ)#�(�0�C��(�\���)�#�S*���S*���S*���ST@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)����*�@��@�B�(����IJ�)�B�(�$@�B�)�������j8��\TP$C�(��X�B�6�X�B�(�b�(� �)��)�B�)�b�)�B�(��(�����)�B�(�0�(���0�)'C�(��,\%C�(&C�'�X@� �	�@���(K@k@�-��(��(��N!@�@��/=�5k1LE�!@k����(�
A�!@�!@��k��E�!@��O	A�!@�J
AJ!@ʩJ���k@�!��-˭�1E�!@�9E�!@��AE�!@ν�-��A��I�PE)���IE�!@͵�ME�!@���QE�!@����J��@E)��(��_'C�(%��(�@�@@��	 �&��(��� @*@��j)G� �E!@Ơ(��(

AJ!@!@J�ƜE� @G��AJ!@I��A� @%�����@� ��Đ1E� @	9E)!@&�	AE)!@Ƥ��A��I%�E)�IE� @ƜME� @ƜQE� @ƜŔ��$�E)`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L_�(���[�� ����d@�)��d �)��@@��(�����*�@�� @�c�(�#�W��w�W��(��)�#�(� �)��)��)�#�)�"�(��)�s*�@�t@���(�@�@e���Ţ�(���T�c�(�D\���(�@�@e@�(��f �(����(��� �(�C�� �)�C�)�c�)��)Ģ�(�c�(�\��#�_���S*���_�s�S:C�($C�D'�[ע�(��������$,PD�����W��o�W�B�(Z�(�@�E��[E�(���_@�)d�j8���_��T���S@@@@@@c��a`�)v@�)w �)x�)�����(�P\IJ�*�@�,@���AIJ�)䢁(���䢁)�R�(���`䲁(���䲁)�*� @�@��(�����)��(�"�(� �)��)���"�)�B�(�d\�*�@�@������"���������(�\* P��Ɛ ����8���CT�"�)���)Ģ�(�@`���(�,@���(� �(���� �)��(�����)����D���)������W���(�����)���(��(�����)x�(w �(v@�(a`�(c�� L*���S@@���(�@�@@�� ��@�(�(�� @*@��j)H!��E� @Ɯ���(�AJ!@� @J�Ơ�E!@H��AJ!@I��A� @%������@	!�&��0E)!@�8EJ!@I��@EJ!@)���A�I��E)��HE!@(��LE)!@��PE� @������E) L@@@@�� �(��� �)� �)��(��@���(�0�(���(��(P�@�l�(��@�!@�(�p�(,��cP@@@�p�(,��c�d� �l�(���GdP@@��(��(L��k���k��(�-@��(�-X��C���C���(���(k��(k��(lu�k���S���_�`�(�`�k���S���)���)���)���d�)�P@c��a`�)v@�)w �)����T��(�dD����(��Ʋ*�@�����a8��(������@�����a8��(�H�@�����a8��( ���@�����a8��(�'���@�����a8��(G���@�����a8��(�P�@�����a8��(���DƐ@�P�����a8���(���(���(`@��@���a8��(����@���a8��(�D���@�����a8�X@������ �X��!��CPr8���$\����(����T��(�pDIJ*�@�dD��(E���E���L@�2�(�A���8�����T��(�"�(� �)��)���"�)�T�T�B�(�$@ע��T��T�T���(�b@�R*�@�PDT�B�(�@�0DEp�(��Ep�)������a8Dp�(���Ep�)����DD �(�@�8DT���)��(�D��*��@�@T��T��(T�b�(�@��L�"�(�4@�@����j8����\r8T���(�DP�d���(�@���WĢ�(�@�#,W�b�(�*�@@�(@Ų*�`��@�D��a8P���a8�b�(�@�(TĂ���w �(v@�(a`�(c��P�b�(����j8����_�B��b�(� �(�L���S��T���(�X�G�[�ST���S@@@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)����d �)��(d�)��(�\D�B�(�b@�‹(��D�"�$T�Ă�(�b�(� �)��)��Ă�)$TT��‹)Ģ�)DdP*�B�(���GS@�‹(�@Ģ�(T�‹)#�$T�C�(C�Ƃ�)�b�)r8�b�C�)� �)$T�b�(���(�x@v@�)``�)�}@������{��Կ@@Ģ�(�8\r8�"�(`��)`��)}��)~��)��)Ef'Td��(���[r8�B�)�V@���j8����(\r8�B�(�B���\�"���TPpd����Td �(��(e�(�\\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L*�B�(�3�S*���S��T���ST@@@c��a �)v�)w��)x��)y��)z��){`�)����(f@�)x�x �)x�)�`�(Ɛ�(��@��(��D������T�DF��G��(�$X���(i�(� �)g�)	�)(!�)���)���) #@'�(�X(#�(� �)���)�)���)�Tv�(�BX�����(�B�T��(�"�(� �)��)�"�)��)�Tvx��_��(e@�(�(\{`�(z��(y��(x��(w��(v�(a �(c@� LT@@�`�(�*�@@�@��*�@�D�`���a8 L�`����a8 L@c��a �)v�)��@�(�@T����(ł�v�(a �(c@�P@c��a �)��T�����j8����\��T��a �(c@�P@@@@c��a`�)v@�)w �)��(Ţ�(��H\r8�"�(F`�(�@\�b�(���(����L�"�(�@�b�(���(��LPԿ��w �(v@�(a`�(c�� L@@@@@���P@@@@@@c��a �)v�)w��)x��)y��)z��){`�)����D�(d@�)��(d��<D@@@��(�T���(`�@��Td����C��p\` �)r8#�(����(�Tl`0�)y )x�)Dp�(��Dp�)��(�@l#*�@�4@���D`�(�������A*��A*Ɯ�@���f��TDp�(���Ep�)����DD �(�@��Dd0�(�P��*�@�d@T�b�(���B�(���b�)�B�)��Ă�)��(�8@� �(��dc�(�(@Te#�(��f�(��d#�)e�)��dC�)��(�x@��(�$@3�(�A���8� �(��P�@���(C�(���(�`��(C�(������	�(�C�)�)�#�(Ŕ#�)��\ �@C�(C���X��HP@�	 ��(�H����(���)���)G%���(����)��(�XX�`�(�H@���(%@���(�A�8!�(�P@@�@���(��(��(��c�`�(�{�S���S��TE�(f@�(�<\��{`�(z��(y��(x��(w��(v�(a �(c@� L���ST��ST@c�a��)v��)w��)x��)y`�)z@�){ �)���(6��(8c�(�"�(�<@�������(�(X{ �(z@�(y`�(x��(w��(v��(a��(c� L�T��*�@�d@T�b�(���B�(���b�)�B�)��Ă�)$��(�8@� �(��Dc�(�(@TE#�(��F�(��D#�)E�)��DC�)%��(��@$��(�$@%3�(�A���8� �(��P�@���($C�(���(�`&��('C�(������)�(�%C�)(�)�&#�(Ŕ%#�)��\�"*��@$C�(%C���X��LP@@�	 ��(�H����(���)���)G%���(����)��(�XX�`�(�H@���(%@���(�A�8!�(�P@@�@���(��(��(��c�`�(�{�S���S$��(��T\�"*�8@��(��L��($�L$C�(�PX�(�LP��($�L�2�)�{ �(z@�(y`�(x��(w��(v��(a��(c�P;C�(9C�y\���S@@{�(y��[dc�(���_d#�(���(d���L���S�7�S@@@@@c��a �)v�)���(�*�@�D���)Ģ�)Ģ�(���\�b�(� �(�8���8�D���(�L�B�(���\�B�)�����W�b�(���(���L��)�b�(���(���L�b�(� �(�8����8����D���(v�(a �(c@��L��)v�(a �(c@� Lc@�a��)v��)w`�)x@�)y �)z�)���$����)T��	&�@����D�@TD�(;XTT��($$����)TX�(��G�P#�(����X��(�@@��� \��!���Cr8�����X���GPF��h���dD��$@#�(�X\T,PTD����GTT��($z�(y �(x@�(w`�(v��(a��(c�� L*���S@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)����(�B��@T�Pۢ�(dTdÁ(�$@dT���F��W(P�����fG���WdT$TĢ�(���`������W$T��@T��(�@����TC�(�<@�@�(�@�:3X�@@@$��T9�(:��_T�r�(�(@��(�@�����@�t�T�r�)�����"�\�#���Cr8��\��?�W�������j8ب\�{ �(z@�(y`�(x��(w��(v��(a��(c���S��(�@����T�B�(�0@�@�(�@�'X����T�(��_T�r�(�(@��(�@�����@�t�T�r�){ �(z@�(y`�(x��(w��(v��(a��(c� L���(���T*��S@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)v�������(d��)D����(D��$@��X��X@*��(`��)`��)`��)`��)``�)`@�)` �)d��TD���$@�E(ē�@)���(d����&W�@*d �e��T��D��(�@�������(�$T�D$#�(�@�c�)��(�@�������($T�D$#�(�@�C���)C�(��p\��(�@�������(;��(�dT�Dd#�(�@�s�)��(�@�������(9��(�$T�|DlP��(�@�������(Y�(�$T�D$#�(�@�s�)��(�@����Y�(���($T�D$#�(�@���)�"�(�L��)x ���ETf��TT�@)��(e��(�8\��~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LTc�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)v�����d�(d��)��($H��@��h��h@*`��)`��)`��)`��)``�)`@�)` �)d��T$���$@�E(���@)���(d���/$W�@*d �e��T�PD��(�@�������(�(�$T�D$#�(�@�S�s�)��(�@�������(�(DT�DD#�(�@���)d �@�%Td��(e��(C�(#�(�P@@@�Z�@{@���F��&Tf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(ŗe��)���Sx �f��TT�@)d�(e��(�8\��~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)v��������(d��)`��)`��)`��)``�)`@�)` �)`�)d��T��(:C�(>[A*%�(��*�@�D���DTP�D�D���@@?[�;C�����@(�d�)Ń��@)��(���$@�E(���@)���(d���W!W�@*��d�e��T��D{��)z��)��(�@�������([�(�dET�Dd#�(�@�$c�)��(�@����[�(���(dT�Dd#�(�@�$s�)����(����D{��(,P��$3�(�{��(�@�@$SA(�t$SA)Xd���eT�
*�B�$@�@`��)$3(d�)z���d��(e`�(P@Z���@�����EfTf`�(��e`�)d��(��d��)���_d��(��e �(���(���Đd��)���-�`�(d��)���(��e`�)���S%S�z��DfT%c�DfT%�� �DfT%��DfT%��z��DfT%��DfT{��(d��(e`�(8C�(9#�(P@9��{@�����%FTf`�(��e`�)d��(��d��)���_d��(��e �(���(���Đd��)���-�`�(d��)���(��e`�)���Sy�f��%T$Tz��(�@)z�)��(e��(��\����(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LP�:��P@@Z����C�����EfTf`�(��e`�)d��(��d��)���_d��(��e �(���(���Đd��)���-�`�(d��)���(��e`�)���ST@@@c�a��)v��)w��)x��)y`�)z@�)v�����D�(d �)�*�@�l@�d��T[���(� �(�@8�C�) ��@)�P<�C�)@��@)��(�@�������(#�(�$T�D$#�(�@�c�)��(�@�������(#�($T�D$#�(�@�s�)`��)`��)`��)`��)``�)`@�)` �)�
*�@�$@�E([@(��[@)���(d���;W[@*d �e��T�LDC���(� �(�@ �Ɛ@���x �Tf��TTD�(e �(�(\��z@�(y`�(x��(w��(v��(a��(c� LTP@@@@@@@��\���(���(�@� @* L L@@@@@@@c��a �)����(��(d�����Ta �(c@� L@@c��a �)����(���(d�����Ta �(c@� L@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)������(f�)���(`p�)fp��T�D@��(f�(�L\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� Ldp�(��`��(�\����S�����Sw�)v �)��Tdp�(x@�)��)T��������������y�����*���T�����(�Plep�(���A�8g@�(�@�(Ɯŀ�)`��)`��)f��)|��)}��)&GTd����ST��Td�(v �(���ST@c@�a��)v��)w`�)x@�)y �)z�)��p��T���(�HD���)C�(���(��(�L���D&T�(��(��(�DT��Tz�(y �(x@�(w`�(v��(a��(c�� L@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)�����(d��)�B�(�b�(@@EÁ(�P����t�7k\y@�)����ق�(��(T`@dT$#�(�8���8�<@�K@D�T�݂��CD`K@TP���T�"�)�P%��($�L���G݂����C�4T�`D�����8@^#�(T�c�(���C�(���c�)�C�)��ă�)�D�+�W��@Tc�(��C�(��c�)C�)����)�����W�(#��HD �)������(�\*P��(���C��T�#�)���)����W �(~p�)F`�(hp��'�G�W`+@D#�(��(�PD� �}��d��(�\*P@S@�3DHP��(���C��T`#�)}��)�e���WD#�(wp�)F`�(� �hp�'�ϳW$#�(�8����8����D%��($�L��(�@TT���T���(���(��(�L��&Ty@�(T��(e��(�<\$��(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@��(���(����X�����D� �(� �(��@� �(�@	�� �@�

�M�(�@��(Nq�(.`(P@Nq�(.dmJA�J�(_��G�P�XJ!�mJ�(_��GlP�@N�(��(���k���k�@��(M�\���SM̩�[���Cߵ�C���(���(���(���(���@���0�5J����S�@�A��P� �( �@E`�( �@�@@@�,�(�@��(-q�(��`P@-q�(��`�%d)!�L)�(?��G|P@@@�@-�(��(�dh���k�@��(,�\PP
,�EX`=@���C���(���(k��(k��(k�k@�-k1)����S@@L)A�)�(?5�G�P�@I`�( P@@@LA��(�@��(�@��(
q�(-��cP@
q�(-��c�%d!�L�(��G|P@@@�@
�(��(͔�k���k�@��(�\���S
�u�[m�C���C���(���(k��(k��(k�k@���,k1����S�@�A�Ŕ���)� L@@@@@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�� ��TD �(�����0D����(����Ɣ�����PD$ȿ��8h������,h��(����D���@�����d�������������<lD �(���pD����(����Ɣ�����HP��� B�����������8h��T@P:�_�hE����h��)�P�X���T��$`D �(���0D����(����Ɣ�����PD$&��h��&��h��&T��D��)���Ţ�(��E�$DĺA*�D�ҁ(�D�b�(�dE�DƂ�(|���h�`��D9���@�B�(T��D�b�(E���@�b�(����żh�@��DŲA*�D���@(ŲA)���tD|P�@�������[�0�ClP��� ��"�(���Uh�@�D������"�)�@�D�C��T�,D�b�(�3�SĂ�(T��b�(����@\�� �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� LƢ�(�ĐG���[�����[DĐ���@�����{�Sd�s�S�$�ĒTd�W�S@c��a �)v�)�����(��`��T�DT�T�@��v�(a �(c@�P̿v�(a �(c@� L@@@@@@c��a`�)v@�)w �)�T�ܿ��4@���(���X�@�@TP�@�"�)��)��w �(v@�(a`�(c�� L@@@c��a �)v�)�T�B@�T��:@�B���a8���@@��������`,PV�(���G��T�v�(a �(c@� L�T���S@@@@@@@��(���)d,��4X��8X��\\��(P�,@��D\� �)8P��P��P��� �)�`�(�*�@�@�� L@@@@c��a`�)v@�)w �)x�)����T�@�*��@�X@�(PT�T��*��@�D�6DD�HPT���(�@�(�T�TH��&@#@�x�(w �(v@�(a`�(c�� L�x�(w �(v@�(a`�(c��Pc�a��)v��)w��)x��)y`�)z@�){ �)|�)���@��;��X�0�(�2�(��\���X�"�(� �(��\�*�(Đ� @��D�b�(���(�@�`�(�X���(��D������ע����o�T���n�T�"�(��@�T;DP�ע��T�"�(�@��$P����WĢ�T@���Td�|�({ �(z@�(y`�(x��(w��(v��(a��(c� L�"�(� �(���_���S�(�@���T�B�(��@��(�@@��� �\��!���Cr8������X����GP���\��Esd����@�T�䂂(��G�hj8����(\r8�@�(�@��\\� ���T<P8`���T$P�Td�����GT;���S*���S@@@����(K!@g@���@�(&�(��ǜG@�@@�� �
5�9NE�!@����M	A�!@��J
AJ!@j�K1�K
d L+��(l!@�@δ�4�9n@�@�9�=oE�!@ν͵n	A�!@̱k
Ak!@��k5K
d L%�X%A�(��\%A�	�J��@@@k�(d��@eaXl��(�!@�@ϸ.9�=�@�@�=�A�E"@����	A�!@���
A�!@���9���c Lc��a`�)v@�)w �)�d@�*�B�PD� �(�@�`�(��(�D@�����" X*��#_��CPr8 @�@�)P� �(�@w �(v@�(a`�(c�� L�`�(���(���C�`�(�`�(���C����L����`�G���S@@@@@@���(�A� @�A� @��4E� @Ɯ�E� @Ɯ�E� @Ɯ�E� @Ŕ��E) L@@@@P@@@@@@�P@@@@@@�P@@@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)�Dp�*��������������ڐ������D�,���(�@zP������)�B�Ģ�(��@���)�B�(�@����TC�(�0@�@�(�@��'X����T��(���_TƲ�(�(@�B�(�@�����@�t�T���)�b�(�p`D`�(�`\�ҿ(�@@�ҿ)���(� �(E�(��\�P*�@�DƂ�(ł�(���(T���(�`���a8�¿(�@�¿)�TP�TD��`����,���(������)} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� L*���Sc@�a��)v��)w`�)x@�)y �)z�)Ep�(��Ep�)Ep�*����������������������%�,���(��@��@�(�D\P�����)�@�(�L@�@�)�`�(� �(F�(��\�P*�@� D��(��(�`�(��TD�`�(�`���a8%��`����,���(������)Ep�(���Fp�)����DE �(�@�TD�����j8�(\���z�(y �(x@�(w`�(v��(a��(c�����Sz�(y �(x@�(w`�(v��(a��(c�� L�T���S*�W�S@@@@@@c��a`�)v@�)w �)x�)��(��D����(Ŕ��*�@����a8��(���Ƞ@��a8��(�H@��a8��( Ƞ@��a8��(�(Ƞ@��a8��(HȠ@��a8��(�P@��a8��(ȠD�@�P����a8��(���(���()`%	@ɤ @�	)� a8��(�	�ɤ @�	)� a8��(EŔ�@����a8�4@���� �X�X�!���CPr8����@��(��D��*�@��D��(F���F����@�0�(�A���8������T�"�(�"��"�)��)��r8�"�)� �)�x�(w �(v@�(a`�(c��P���T��(�D��TT�Za8��T��(�4�Cx�(w �(v@�(a`�(c�� L@@@@c@�a��)v��)w`�)x@�)y �)���@�(T� @�B�(�X�r�(��\P���P��W���@�b�)���(��L� @$#�T$���V@�B�(TDP�*�A�4@0�����*��� @���b�(���C��L���S�y �(x@�(w`�(v��(a��(c�� L*@c��a`�)v@�)w �)�����*�@��D��IJ�)Ţ�(��@���(�$@�2�(�A���8� �(��P�@���(�B�)�B�(�8\��(�"�)��(�@�@���� �������W�b�(�b��"�)��)r8�b�)� �)䢁(��䢁)�R�(���`䲁(��䲁)�*� @�@��(����)Ģ�(�<`���(�4@���(� �(��� �)��(����)�DD�(�p	&��(���)���(�����)���(��(����)IJ�*�@��D�B�(��IJ�)6uXĢ�(%��(��\��(%!�(��$!�)%a�(�B�&a�)�b�)$A��B�)��)(��(@�@@��� ��+�(k�+�)+1�(k�+1�)�(
EJ!@��!@l@�0.A�(��(����1-��(�
A�!@�!@��J��E�!@�	A�!@�
A!@h�
����k@�!��-��1E�!@�9E"@��AE"@���-��A��I*�E)���IE�!@��ME�!@���QE�!@����J�*�E)�\��($
X@*��(K@k@���,-�(��(��N!@�@���<�5k1LE�!@k�,��(�
A�!@�!@��k��E�!@��O	A�!@�J
AJ!@ʩJ���k@�!��-˭�1E�!@�9E�!@��AE�!@ν�-��A��I*QE)���IE�!@͵�ME�!@���QE�!@����J�*AE))�($�_w �(v@�(a`�(c�� L*IJ�(�'�S�_�S*�s�S@@@c@�a��)v��)w`�)x@�)y �)z�)����(����ق�(�T#�(�8@T#�(Z�($T�8@:7X�� �D�P� 3@$T䢂(�Ld�P:+X䢂(�4d�P䢂(�$d�P�Ă�(�@�\䢂(��`���(��@E�(�p	&��(�@�(��(��(�@�(�\�@�(�@�(�`�-�`�(�PX����W @$T�T��z�(y �(x@�(w`�(v��(a��(c�� L_��C����W��k�W��(� �(�@���(����B�(��(�@�@���%�k�V?o�G�s�S*��S@@@@c��a �)v�)��@�(TĢ�v�(a �(c@�P@@@@@c��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)������(e��)� �(T�8D���W���(���\P�E*$l���P��(��(���(�LD$#@�PD` �)`�)`��)`��)`��)``�)e �f���Vd@�)$@�D�Pd �(d`�)�&@e@��dD&@�tD&C@�@�(�A�8��E �(����A�xD����(����Ɣ�����TP�Ag�(�8��&@ߔ�C�(�@Ɯ����(�A�8��&C@�p�G��S�%� h���he@��T�@ȿ����P*$#@���CC�(�E*�T�p@���(��D�)�C�dT�%F<T�(D������(܏X�C�%FT���C�dTDTPп���"�T����V���(f��(��\~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� LdT�E*D �(����0D����(����Ɣ�����P�$�4h���,h�ET�@ȿ�����S���ST@@@c��a`�)v@�)w �)x�)� �(�@�����@��(�@�L䢂(���$`�B��T���(�T���OX����T�B�(�@� ��i8P@��T��x�(w �(v@�(a`�(c�� L@����S@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)������(e@�)� �(�T��	D����W���E��ٌ`����`E��%�XE��(�%�X&�	\��@��D��(���(��	D�B�T�!L������(�"X@@@�B�!L��(���_T�PF�����`��%�XE�� �&gX�$�%	\T�B�(��@���(��@���)T|P��&�X��&KX��%�\��@�<�C�B�(��(���(�	D�B�T�!L������(zXdC�!L{�(z��_T�B�(�X\P��%kX��%�X�,�%G\y � �$T%���W��D�b�(e �(�\���\��(���(��D�B�Td�(�B�)e ���T�LD���w �:Z�(Y7Xd�(D��)DC��tT���CP��(�@�������(d �)D �(�����D����(����Ɣ������P��X�T�ܿ8�3@��(����X%@�@�T�P��@�|�C�C�S`��)D �(����TD����(����Ɣ�����0P���P�T�������lT���P�����VxP�T������\h��XPT��LP�B�(�B�['\���S@@�TZ�([#XDc�(���(�HDX��W��T!LX��\��(���[@@@�C�!L��(���_���S*���S�%ȿ ���h�����he � �T�@ȿ���P�$ ��h����hd�� �T��D��x��(x �)S@��(�H@�*�@�@����(�,h��b�(���(��L��@$P���b�(���(��@����)��)��(�\D`��)`��)`��)``�)`@�)` �)�d��)Td�)�p@d`�)�z�����d��)��d��)��d��)�d��)��d`�)��d@�)d �d��)�d �)��d@�)y�)DeT�$@�*���C} �)9@ k@��2�(���@���Ae��(�8e��(�8d��(���(e��(g`�(T�l@���)� �)d��(|��)��)�#�)��)�e@�(f��(T�d �(�0hf�(���@�$@ @�Ae@�(�8�À)��7�S��@�Dd �(�@��@f �)d@�(�)d �(���T��D����$#hd��(�)d`�(���T��D��X��C\T����@@�������e��(��T��DLP�À(��\���(�@@d �(�P@�3@��(� �(��@�C���T�D�c�(�@���(�@*�0E ���\��(����)�T��S���T�"�(��@T���P���PP$@��@Td`�(T�b�(� �(y��$�L��@�z��(Y�X���]�(DC�TD�(E#�(� �)��)[#�)\�)DT����_|P#�(���W�$@�xD��lP��òWT�LPп0P����0P���`$��(�P�@��f ����|W���ST���Pe������W��(���(�hD�B�T�D	T������(�X�B�0	T��(���_T�P�T��'�S�Pп�Tz��(_CX���\�(DC�TD�(E#�(� �)��)Y#�)[�)DT����_d`�(T��)d��(T��"���T����V���(f@�(�h\`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L���;�S*�+�S*���S*�{�S*��ST*���S�d����� �Tȿ�O�S@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�� �(D�(��(� �(�2�(�����\�*�@��D��*� @�D�P�T��D��(�"�(�����(��@�B�(��@Ģ�T��B�(7@C�(���(���(�(�(�8�����Ɯ�h��(�8A��\�;Ec�(��@C�(��\��\����\%�\�;E��D�P��P�;E��� @$��$��(�G����DĢ�(���(�$Dآ�T�B�(�l@����*���(���%\���� �X�|�!���CPr8����D��ۮWTT�B�(���G����*����(�IĐFc�(ǐ������ĐƐ��D�(���(���(�B�(���(���8E�(l����(�`8��T��h@��;@��(䂀(��*'����T��@�P�DP�B�(��D䂀(���*��A��D�P~�DP�;E�@�\���\$��$���D���� �X��!���CPr8����@c�(�<@���a8�P��)xP�"�*�2�($���T��@����)D�(��(� �($tT��)��)���W���uW��T�T�@���la8(PDc���a8�B�(�����a8�"���a8Ģ�T����)��(���)�b�(��(�@�B�(��L��� �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� Lп���S��)>��k�S*���S*�'�S@@c��a �)� �(Ta �(c@� Lc@�a��)v��)w`�)x@�)y �)z�)���� �(���(�`�$TGC���T�$T��I��z�(y �(x@�(w`�(v��(a��(c�� L@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)������(�E�K�W���D�T��(�$@ؿ3�(�0�(�|\�(��(�p\$@� @�(�(Đ�"�(���"�)�$@�$@#�(#�(ĐFA�8���8Z���(��(ĐFA�8���8F�$@�D'C@�<DC�(�\HP�(�@�#���(�A�8F�'C@���C�(�A�&8��C�(�\C�(	C�	1\�P@@@��(K�k
A�.8F��(	iX
��(��(j���k
A�.8J��.8���0@��(l@k�
���1�-k��(J�J
A�*8�����GF�(	��_�Td�{ �(z@�(y`�(x��(w��(v��(a��(c� L@@@c��a �)v�)��O�W���)�v�(a �(c@�P@@@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����(d�)��(Ģ�(� �(����X�@������(�$@Td��)��@~`�)d��(�`�TP~`�)`��)������d �)Td�)w@�)���(��Xy��d��(��d��)�z����<P@�A����(��(�A�8��(��-��(� �)����(�+X�c�(���C����(�A�8��(��-� �)��( ��) ��) ��) c�) C�) #�) �)w��)d��(d��)DeT���C��-P@DeT�|�C���(���C�c�(���C���(���(���_��(� �(�����(�8A���((��k��()�'��k1l��)��(����(���������#�)��SŜ���)� �(����(�������#�)���S�"�(���"�)d �(e�(Td@�(���(~`�(�@w��(�b�T�Tv��)�w��)z�������y��Կ@@@Ģ�(�8\r8�"�(` �)`��)z�){��)| �)&�Td �(���[��(e�(�8\ �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� LT@@@@c@�a��)v��)w`�)x@�)y �)�����(T٢�(T `�����oW���T�*�@�tD�ע�(�TĢ�(���h�THP���$\�*�@�@�B�(���[��Ģ�)�T����/oWy �(x@�(w`�(v��(a��(c�� L@@��a8���@��������d L�c��a �)v�)�T�v�(a �(c@� L@@@c��a �)v�)�T�B�(�<@�@�(��@�)��� �)���(�����)���(���(�8�����`�)v�(a �(c@�P@@@@@@@���(� �(� ���a8�@�(���a8���(�@�@�(���a8�`�(��(�@�@�(��L L@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)��)���d�(d��)D��(� �($�(�@��%�T�B�(�J@��(�H@��� �\��!���Cr8������ X����GP(P���X�����d���@��T��(��(���(���($c�(� �(�@EC�($�L�b�(%��{��)�@@�B�(F��(�4\��e��)Te��(� @~ �)}@�)|��)x��)z`�)T%C�(�@�(�@�ĚX�������|��Կ P@TT%C�(�@�(�@��RX�Ҿ(�\�¾(�4X``�)`�)y@�)x �)~`�)e��Td`�(���[%C�(��(�@�ĺ�_T�b�(��(��x��(c���a8��(�z`�(EC�(�����a8�T��(��Dv��(�T�|��(}@�(~ �(�����lj8$#��T��@$��W�T�����\|��)x��)�;�����B�T���(�wX݃��"�X���#���CPr8���CXT�C�DT٣����(�\$�_�WDT��j8���_$��W���Sd��(���;E�ؒTd��(�`���a8�EC�(�����a8T�nj8����,\r8�B�(�B�v��(�p\�"���TPv��(\d��(e��(�h\��(~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� L�T���S*���S��T���S*�/�ST@@@c��a`�)v@�)w �)x�)���*�@��D��(���(� �(T�C�(�d@�B�(�@Ƣ*�@�PDT�B�)�D@� �(�@��D@�����a8��(���(�`�(�B�(�`�)�B�(�B�(���)TP�B�(��A�x�(w �(v@�(a`�(c�� L�����G��(�A���C� �(�@߄�C�����S@@c��a`�)v@�)w �)x�)y��)z��){��)|��)}`�)~@�) �)�����@�(|c�Tvc�(��X���Կ�P��(ܾXĢ�(���c�2�(�XE`�(���_���(�<@�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_�b�(���(���C��(�@�����@�(�|�_Ģ�(�p�_r8�"�(E`�(��`�_�b�(���(���L�G�Sd��(��@�`�(�`���X���Կ�P��(ۺXĢ�(���c�2�(�XE`�(���_���(�<@�����(���C��(�@�(��(�@�(��_�@�(�@�(��c�-�`�(���_�b�(���(���C��(�@�����@�(�|�_Ģ�(�p�_r8�"�(E`�(��`�_�b�(���(���L�G�STD� �(~@�(}`�(|��({��(z��(y��(x�(w �(v@�(a`�(c�� L@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)��(		@ A@	�
ʨ@D*

�@!D**ƨ�P@	��D@��)��`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L���	&����D����(���T��@�[D���D���)�"�����TEĢ�Ģ�)���)�b��b�)Ă�)�B�)�"�)��)���)���)$@/@�@��a8	� �@	�(!�	��(}d�"�)��)��T����dl�����C��)���S($C�(�X���C1�(�2�)���SA�(A����[G��d �)����~@�)P��(���[������Td�h(G���C��(���_�@�*�B�\@� �(��D�b�(���(��@�`�(�`�(��@�����LG����~@�((�L@� �(�@�b�(��(�8@�"�X���#?��CPr8�@�@�)�+�Sп���Sw �(���S����S���TE$�w�S@@@@@@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)�����(�@��� ���(3�(c���	
K�3W������h�b�(����AW���$;h�����"�\�#���Cr8��\����W6�P���)C�$T��(��4X����"�Xǔ�#���CPr8�@���a8����@�����F�dd��|EĢ�)*�@�@��(��)���)���)ע�)C�(�B�)���(�@�@@�Ɛ ��c�(�b�)����(�A� @�A!@�� @	@
�J%�B�(k�(k�i��Ek!@ƬI%�4EJ!@��AJ!@� @J��Ek!@�Ƥ�E)!@��E)!@I��AJ!@H��A� @�������@(!�)��E!@��0E!@�8EJ!@H��@EJ!@�NJE)&��A��IŒE)��HE� @��LE!@��PE� @�����ĂE)�T�����WIJ�(��IJ�)�ET�����(��)�����)���)��)$T<P$T�����"�\�#���Cr8�\\��#�W�|�({ �(z@�(y`�(x��(w��(v��(a��(c� L���(���T*6���S���(���T*���S�T�s�S@c@�a��)v��)w`�)x@�)y �)z�)��T���scW�b��b�(�2X������'�ÃW��(���_�z�(y �(x@�(w`�(v��(a��(c��P@@@@c��a`�)v@�)w �)����b�(��D\��*� @�Dׂ�(�"X�FD��P��P����(�b�)��w �(v@�(a`�(c�� L,����k��(�@���S�T���G���-T���b�)���Sc��a �)���(�H@���(���)��(�� 5`()�*�#	�*��"(\L�#���Cr8(��_�Ŕ���)���T8�d@���*�`�(�A�k笏���pƜ��E��_���0@��(���)���)r8�����)�@� �)TP��*��a �(c@� L@@@@@���(���(��)�@� �)�����) L���) L@@@@@@����) L@@@@@ L@@@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)��T����������?������d@�)�d �)@�d�)P䢀(��䢀)DT$�e�*���T���e�(�`l�A�8��"�DTw8���G$E���8�d�@���Cd@�(���(e �(f�(T�X@r8��)�s�S��TD�`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� LDT��п9�PT��e�*���T���e�(�p�o�l�[�A�8���#�Tģ�(���ţ�)������G��(���C��)�����T���S@@@@@@���(��(�Dc�a��)v��)w��)x��)y`�)z@�){ �)|�)����-T��������P@@T��%�*���T���%�(�Ll�AD8���#�T���(������)������G��(���C��)�����T���S|�({ �(z@�(y`�(x��(w��(v��(a��(c� L*���S@@@������(�`�(�\���(�@�� L��*� @��D���(��@c��a �)v�)����$���T���B�)��(�P�0@�(���)�5w��Ƣ�(�"��)���)Ţ�)���)v�(a �(c@�� L���� L� L@@@c��a �)v�)��@�h@TĢ�)Ģ�(�X@Ģ���(�$@��)���G�@��� P���(F�@�ǔƜ��,�T�Tv�(a �(c@� L@@c��a`�)v@�)w �)����(� @ע��T��)�Tע�T�i8�������a8w �(v@�(a`�(c�� L@@@@@@@c��a �)v�)�TĢ�)Ģ�(�0@Ģ���(�4@��)���G�@���0Pv�(a �(c@� L���(F�@�ǔƜ��,�v�(a �(c@�P@@@@c��a`�)v@�)w �)����(� @ע��T��)�Tע�T�i8�������a8w �(v@�(a`�(c�� L@@@@@@@c��a`�)v@�)w �)����T�i8�������a8w �(v@�(a`�(c�� Lc�a��)v��)w��)x��)y`�)z@�){ �)v�����d�(d�)��(���\�b�d��FT���(���($�L�B�(`@�)d �)z�)G��(�p@��*�@�dD�b�(�@@�@��(�@��HX��@�@��(�@��0\�B�@D�(�P*�@�D�f�$�
W��D�@��"�(���������(���(�L��&TPd�(e�(�0\��{ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@������(�`�(�\���(�ǜ\��*� @��D���(��@c��a �)v�)����$���T���B�)��(�P�0@�(���)�5w��Ƣ�(�"��)���)Ţ�)���)v�(a �(c@�� L���� L� L@@@@c��a �)v�)��@�x@Ġ�(�@�(Ġ�)Ġ�(�d@Ġ���(�(@���)���G�@���$P����(F�@�ǔƜ��,�T��Tv�(a �(c@� L@@@@@@c��a`�)v@�)w �)����(� @ע��T��)�TĢ�(�@�(Ţ���i8�������a8w �(v@�(a`�(c�� L@@@@@@����(�@�(���)���(�,@�����(�$@��)�ƔG�@�� P L���(F�@�ǔƜ��,�P@@@@@c��a`�)v@�)w �)����(� @ע��T��)�TĢ�(�@�(Ţ���i8�������a8w �(v@�(a`�(c�� L@@@@@@c��a �)v�)�TŢ�(�`�(���@�(��Ţ���i8�������a8v�(a �(c@� L@@@@@c@�a��)v��)w`�)x@�)y �)z�){��)|��)}��)~��)`�)����d@�)����d �)��d�)�����?����@@@��*��d@�(T�����(dwl�TdAe �(�8e�(���#��Td�'T���)�TDE��Ē%����b8�TD��w�S�`�(~��(}��(|��({��(z�(y �(x@�(w`�(v��(a��(c�� L@@c�a��)v��)w��)x��)y`�)z@�){ �)|�)}��)~��)v�����D�(d��)�$��($��H@��X��X@*`��)`��)`��)`��)``�)`@�)` �)d��T$���$@�E(��d@)���(d���g�Vg@*d �e��T��DC�d �@�Td��(e��(#�(�(�P����{@������&Tf��(��e��)d��(��d��)���_d��(��e@�(���(���Đd��)���-�`�(d��)���(ŗe��)���Sx �f��TT|@)D�(e��(�8\��~��(}��(|�({ �(z@�(y`�(x��(w��(v��(a��(c� LT@@@@@@@c��a �)Ep�(��Ep�)�o�VDp�(���Ep�)����DD �(�@�Da �(c@� LT���SG�H�<G0@H0XB1hG2lH2�G�H�G�H�G�HB10B1<G0@H0TGXH�G�H�G�H�B4�G�H�G��H�GH G$H<G0@H0tGxH�G2�H2�G�H�G�H�B6tG�xH��B;�B;�B;(B<PB<�B=�B=�B>�B?�G��H��B@B>B?G�H�lB6�G��H��B;�B;�B<�B<`G�dH�(
B><
B?p
B?t
G��x
H���
B@�
B>B?0B?4G��8H���B;�B<8B@�B>�B?�B?�G���H��@
G� D
H� �
BD�
G�(�
H�((G� ,H� `BD�GG�HG�G� �H� �G�HG H lBH�B;�B;�B<�BI�B<�B<�BI�B;0B<�B<�B<�BI�BJ�G��H�$G�((H�(\B;hB;�B<�B<G�H�LB;XB;�B<�B<�GG�HG�BH�G��H��B;�B;B<B< BI$G(HDG HH XG� \H� �BJG�8H�8(G�@,H�@8G�<H�PBHtBI�B;B<�GN�HN GO$HOhGOlHO�B=GPHPtGGxHG�B>�G��H��B?�G���H��<B?DB@XBQtG��xH���B@�B@�BQ�B@�BQBQ$B>4B?hB?�BR�B@�G��H�@BSXBT�BJ�BH0BI@BQtB@�BU�BI�BR BRD B>T B?X G��\ H��� G�� H�� B?� BRT!G��X!H��p!BV�!BU�!BR�!BR"G� "H�$"BT�"B@�"BQ�#B@ $B>,$B?4$G�8$H�X$B@�$GG�$HG%G2%H2@%G D%H \%B@�%BJ�%BQ&G��&H��$&B@0&B@t&BQ�&B>�&B?�&B?�&B?'B>8'B?h'B@�'BQ(G�(H�$(B@,(B@p(BQ|(B>�(B?�(B>�(B?�(B@�)BH�)B=�)GP�)HP�*BY+BI(+BZd+BH�+BI,BRH,G�,L,H�,P,BVh,BR�,B]�,BH-B_-BI4-B`.BbP.BbD/Bd\/Bd�/Bd�/Bd�/Bd0Bd\0GG`0HG�0Bd1Bd$3Bf�3Bd�3Bd�3Bd�3Bd�3Bd4Bd 4Bd84BdP4Bd�4Bf�5Bd�5Bd�5Bd6Bd06BdX6Bd�6Bg�6Bd�6BdH7Bh�7Bi�7Bd8Bd88BdT8Bd|8Bd�8Bg�8Bd9Bd(9BdD9Bd`9Bd�9Bd�9BH$:BI�:Bd�:G�,�:H�,�:BV�:BR�:BR�:BI�;BJ�;GG�;HG�;B=<GP<HP�=Bf?Bf�@BfLABJ�AG �AH �ABk�AG �AH 8BGG<BHGCBmXCBnpCG tCH �CBk�CG �CH @DBo�DGO�DHOEGOEHOPFBmdFBoHGBH�GGO�GHO�GBp�GGq�GHqHGOHHO�HBr�HGO�HHO�HGq�HHq@IBt�IBIDJG�,HJH�,LJBV`JBR�JBR�JBIKBJhKGGlKHG�KGu�KHu�KGv�KHv�KGwLHw4LBxPLBI�LBJdMGGhMHG|MBH�MBl�MB{NBeNB| NBITNBJ�NGG�NHG�NBH�NBlOB~4OBe<OB|@OBItOBJ�OGG�OHG�OBH�OBl<PB�\PBedPB|hPBI�PBJ�PGG�PHG0QB�`QG�dQH�pQB;xQB;�RB<�RB<�RBQ@SB�pSB��SB��SB@�SG ��SH ��SG���SH���SB� TB��TB��TB��TB�UB�dUB��UB@�UBJ�UGG�UHG�UB�VBJ0VB�TVB�tVGGxVHG�VG �VH �VG(�VH(�VG@�VH@�VG�VH�VB�WBJ4WGG8WHGDWG$HWH$`WB��WG��WH��WB��WB��WG��WH��WB�(XB�8XG�<XH�DXB�|XB��XG��XH��XB��XB��XG��XH��XB�$YB�4YG�8YH�@YB�xYB��YG��YH��YB��YB��YG�]�YH�]ZBJ8ZGG<ZHGHZG LZH �ZB��ZB��ZB��ZG��ZH�[BJL[BHp[G�t[H��[G���[H��\G�\H��\G��\H��]BI�]BZ�]GG�]HG(^B�h^B��^Bb�^Bb�^Bd_Bc_B|X_BJ�_GG�_HG�_G(�_H($`BHH`G �L`H �X`G��\`H��t`B��`B��aB�bB�bBILbG�PbH�`bB�xbB��bG��bH��bB��bG��bH��bB��bB�`cG8dcH8|cB��cG@�cH@�cB�dG� dH�0dG�4dH�LdG�PdH�XdG�\dH�ldBJ�dGG�dHG�dB�PeB�heBdxeBc�eB|�eBJ�eGG�eHG fB�xfB��fBd�fBc�fB|�fBJgGGgHGgG,gH,<gG
@gH
TgGFXgHF\gGe`gHelgBT�gB��gB��gB�hG`hhH`hPhBJ�hGG�hHG�hB�iB�0iBdtiBf�iBc�iB|$jBJtjGGxjHG�jG,�jH,kG`hkH`h�kB��kB��kB� lB�0lB�8lB��lG`h�lH`h�lG0�lH0mBfmG�mmH�mhmBJ�mGG�mHG�mB�4nB�LnBd\nBcdnB|�nBJ�nGG�nHG�nG4�nH4oG`ooH`oDoBJ�oGG�oHG�oB�,pB�DpBdXpBdlpBd�pBfDqBf�qBf@rBcHrB|�rBJ�rGG�rHG sB��sB��sBd�sBc�sB|�sBJ4tG�88tH�8XtG\tHltG�@ptH�@�tB=TuGGXuHG�uG��uH��uBH�uBl�uBI4vB6�vB6DwB6�wBJ�wB=�wB=�xG�H�xH�H�xG�H�xH�H8yGG<yHGhyB��yBH�yG�H�yH�H`zBI�zBJ{G�H{H�H0{B��{BD|GG|HG,|B��|BJ�~G��~H��~B��~G@H@BQB�@G
DH
pG(tH(�B��G@�H@�B��GN�HN�G��H��GP�HP�G`�H`(�B�@�B�܀G`��H`�B�$�B�4�G�8�H�@�G��D�H��L�G`�P�H`�x�G(|�H(��B���B���G@��H@��B@ЁG��ԁH��܁G`���H`��G@��H@��G����H���G���H�� �G��$�H��8�G�<�H�@�BTt�G�x�H���B���B���G���H�ĂGȂH܂G���H��B��B��B�8�B�H�B�`�G��d�H����G����H���G���H����G@�H@��BQ�GH�HH�B� �B�(�B�0�G(4�H(8�B�<�G@@�H@d�G�h�H�l�B�t�B�|�B���B���G@��H@��B@ԅGG؅HG�B�8�B���G���H���B���B���B��B���B� �G2$�H2��B�܇B���B�ԉBQ$�BQ8�GP<�HPD�G�H�H��BJ��G+��H+��G��HċB���B@��B�ԌBQ�B@�B�(�B�`�B@��B���B���B�<�BQl�B@t�B���B�x�B@��G���H���BT�GN�HNp�GPt�HP|�G���H���G���H���B���G8��H8đGTȑHT̑B�8�GL<�HL@�GUD�HUH�B�L�G@*P�H@*X�G`(\�H`(t�GZx�HZ|�GV��HV��B���Bf��B��G��H��GX�HXt�G@�x�H@�ȓGz̓HzؓG}ܓH}X�GH\�HH`�B�ܔG(��H(�BH�B��BIT�G`X�H`��GH��HH��B��B�,�G�0�H�4�B���G���H���GP��HP��G���H���G�ĖH��B?��B��B�L�B�\�B>��BH��BI8�B��B��B>$�Bf,�B?T�B�d�B���B���B�ԙBH�BI<�B�`�BUp�G��t�H��x�BVКBR�BR��BR(�BDX�BD��GG��HGЛG�ԛH��Gm��Hm��G`�H`4�B@d�B���B��BQ�BR�G� �H�4�B�@�B�T�B���B���GP��HPȝG�̝H���B��B�d�B@��B��BR�BR�BJT�G�X�H�h�B���GP��HP��B>؟B��B>��B?�B?��B���B���GG��HG��G�3��H�3��G����H��ТB��G�3�H�3��G����H��4�B�T�B�l�B>|�B���B?��B>��B?�B?p�BJ��GG��HG��B��B��G�5 �H�5$�BVh�BJ��GPĥHPԥGGإHG�G��H��BQ4�BQl�B�@�BR��BR�B@�B@T�BJ(�G�,�H�0�G��4�H��X�B>h�B?��B?��B?8�B>`�B?x�B��GG�HG$�BQl�B@��G ��H ��B���BQ��B>īG�ȫH��BUL�B?x�BR��B?��G(��H(��G@��H@�G�H�B@,�G(0�H(<�G@@�H@l�Gp�H��BJ��GG��HG�BQ$�B>P�BU`�B?p�G�t�H���BQ��B@خB>��B?<�BTL�B@P�B�d�B���B���B���B�ЯB��B�4�BR<�BJd�BUt�BR��B���G��HȰB��G�Ht�GGx�HG��G���H���G`��H`��B��BQ �B�P�B�d�B�t�B�|�B���B�IJB�$�B�8�B@T�B�`�BJ��GP��HP��G�H��H�H̳BQ�G���H���G��H��B�$�B@(�G@,�H@4�BQD�GhH�Hh\�G�`�H�p�BQ|�B@��B@�G@�H@�BQ��GP��HP�G��H��BQ�G�`�H�`0�B�<�B@L�GhP�Hhh�B@��G��H��B��G���H��B�$�B�<�B�x�G|�HжGGԶHGL�G<P�H<x�G�|�H���B���B�ķB��G�p��H�p�B�8�BJT�B�h�B���GG��HGиB�ܸG�r�H�r�G����H���B�T�B�t�B���BJ�G�H�G��H��B��G2�H2�G�H$�G(�H0�G/4�H/@�B4��B��GP�HPh�GPl�HP@�B=x�GP|�HP �BH��BI��BQ��B@��BR0�GG4�HG��G����H����G����H����B���G����H����G����H���B�$�B�<�B>T�B?x�B?��BJ�G��H��B;(�B;��B<��B<�G��H�\�G�`�H���B=|�B=��G���H���B=��GG��HG��BJ��GG��HG��G���H���G���H���BT��B�t�G
x�H
��Bf��BJ��G���H���B��B4�B@�B�\�B&��B&��GG��HG�B���Bb��Bb�B�4�BdD�BcL�B||�BJ��GG��HG(�B�p�B���Bd��Bc��B|��BJ��G���H���B=��GP��HP��B&��B&P�G�T�H��GG�HG(�B=T�B=0�Bbh�Bb��B���B��Bd,�Bc4�B|8�B=��BJ��B8�BX�B��G(��H(��G8��H8��G ��H ��G$��H$�G<�H<(�G@,�H@D�GDH�HDp�Gt�H��G,��H,��G0��H0��G4��H4�GP�HP0�G4�H@�G@D�H@L�B��GP��HP��G����H����B;��B<��B��BQ��B@�BHP�BIl�B���B���BU �B�(�G��,�H��@�BVt�BR��BD��GG��HG�B�0�B�4�Bl�B	|�B���B���G ���H ���G����H�� �B�`�G�,d�H�,h�BV��B_��BR��BJ �GG$�HG`�B���B���B���B�4�BJ��B
��G���H���B���G���H���BQ��GP��HP��G��H��B��G��H��B@��B��GG�HG8�B�P�B�p�GNt�HN��GO��HO��G ���H ���B�,�B=h�B=��GP��HP �GP$�HP��B��BZ�BJX�G�\�H���B;��B=��B=�GP �HP��GP��HP�B<8BHTB;dB<hBI�BHBIBR(B<,BI�BQ�B>�B?�G���H���G�H�B?$B>DB?PB@hBH�B_�BI�B`TBH�B_�BI�B`�G��H��BT8GG<HG�B��B��Bb4Bb�Bb�Bb�Bb(Bb\BdlBctB|�BJ�GG�HGH	B��	B��	Bb�	Bb
Bdd
Bf�
Bc�
B| BJ�GG�HG�B�dB��Bb�BbH
Bd�
BfBd$Bd8BdHBd`BdpBd�Bf Bc(B|�BfBJHGGLHGtB��BbBb|B��Bd�Bc�B|�BJB�|G��H��B��G��H��B�GGHG<B
�G��H��BQ�B�GN�HN�G�H�GP�HP�G��H��G��H��B�pB�|B�G��H��B@�BJ�B�BB$B��GG�HG�G��H��B;�B;@B;�B=�B=(B�BB<B<B;8BDB<�BJB� GO$HO�GO�HO B�XBpGOtHO�Bh(B`GdH�B�B��G��H��B��B� B�T B�p Gt H� B�� BH� B !BI<!BR`!Kd!L�!K�!L�!G@(�!H@(�!G (�!H (�!G(�!H( "B�@"B�`"BHp"Bx"BI�"Bh#BQx#BQ�#B@�#BQ�#B@�#B@4$BH�$BI�$G�,�$H�,�$BV�$BR%BR%BI(B$(BD(B�(G�H�(H�H)BH@)B_L)BIt)B`�)B�)B:�)B�*G�H�*H�H+B�+BD,G(,H(@,G8D,H8\,G `,H |,G$�,H$�,G<�,H<�,G@�,H@�,GD�,HD-G-H8-G,<-H,\-G0`-H0�-G4�-H4�-GP�-HP�-GP�-HP.G��.H��.B;P.B<X.G�\.H�`.BQl.Gp.Ht.Bx.B��.G��.H��.B@�.B</B@P/B�0GP0HP4G�4H�4B;(4B;84B�d4B;5B<5B<�5B��5B�46GG86HGL6B$7GO(7HO�7Bh�7B�8BQX8B@`8B�x8B@�8B@�8GO�8HO,9BhP9BJ�9BQ�9B@�9BQ�9B@X:GG\:HGp:B�:G�
�:H�
�:BQ;B@D;BH`;BI�;G�L�;H�L�;BQ�;B@<B�L<BQ�<GO�<HO�<B�=G=H4=B�@=G�D=H�h=GOl=HO�=B �=B!�=B"�=BI>B@<>BQ�>Bh�>Bh?G2?H2�?B#�?Gy�?Hy�?GP�?HP�?G��?H��?G��?H��?G�?H�?G�?H@B$h@B��@B%AB&4AB&PAB�xAB'�AB(�AB�BBQBB@HBB�PBB��BB��BB��BB@,CG 0CH HCB�tCBQ�CB@�CB@�CB��CB�DB�,DB�8DB�LDB@�DBJ�DB��EB�EBQpFBQ�FB@�FBQ�FG)�FH)�FG*�FH*PGG�TGH�hGB��GB+hHB,�HB&�HB@�HG��HH��IB"�IB-JB.JB/�JB�HLB��LB&�LGG�LHG0MB0HMB1dMB�,NB2HNB2OB�(OB�0OB3DOG �HOH �TOG��XOH���OB��OBJ(PB>4PB?<PG�@PH�\PB4xPB>�PB?�PB?�PG���PH��<QBRpQBH�QBItRGGxRHG�RBHSBIlSB5�SBH�SG`W�SH`W�SG���SH���SBI�SBHTB�4TBIlTB6�TB@�TB5�TB@�TBH UBI,UBQLUB@|UBI�UB7�UG�,�UH�,�UBV(VBR@VBRPVBJ�VBH�VB8WBI�WG��WH��WBH|YBI�ZG��ZH��ZB��ZGm�ZHm�ZG`�ZH`�ZB��\BR�]BQ�_B��_B��_B@�_B@X`G�\`H�d`BTx`G�|`H��`BT�`BR�`B;�`G��`H�,aB<�aG��aH��aG��aH��aG9�aH9�aB:�aG�e�aH�e`bG�HdbH�H�bB&�cG@�cH@�cBQ�cGN�cHN�cG��cH��cGP�cHP�cG�H�cH�H�cGh�cHh�cG��cH� dB@4dB�\dBQ�dB��dG@�dH@�dB@�dB@�dG��dH�eB@(eB�TeBQ�eB;�eG9�eH9�eB<�eGN�eHN�eG��eH��eGP�eHP�eG�H�eH�HfB@(fB�PfBQ|fB;�fG��fH� gB�$gG j(gH j�gB=hB hB&hhB=thB>|hB=�hB=LiB�iB=�iB>�iB=�iB=LjGGPjHG|jB�HkB�kBJ�kG��kH��kB�lG jlH jmBmB&hmB=tmB>(nBhnB=tnB>�nB=PoGNToHNXoG\oHdoG@hoH@loGPpoHPxoG�|oH��oG�`�oH�`�oGh�oHh�oB��oBQ�oBQpB�pB@4pB@�pGG�pHGqB�PqB�dqBd�qBfrBcrB|`rBJ�rBZGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPLGPL( 8!H"X#h$x%�&�'�(�)�*�+�,�-`	Y	\	�	m
	-	[	�	�		�	�		u	�	�	�	�	�	�	�	q	t	�	�	�	�	�	�	)	[	$		�%	�&	-		#-	Y	�1	Y	�		M2			=		e		=	t	y	z	?3	m
	�3	�		�3	m5	�5		�5		�	�	�	�	�	m
	�	�	
	�	�	�	W	B	�	�		�	�		�	�
	�	L		W		�	�	�	H	O	�	�	�		�	�	�	D	D	�-�	�	�
	5	�	�	�	�*	�	�	�	�	�	�	�		�		'	�'	c�ccTcc\c*$cL(c?0c�	4cT<c�@ciHcTLc~TcXc�`c\dc�lc�pc�xc("|c��c�$�c��cX'�c��c�(�c�c\,�c&�c�9�c;�cd;�cP�cl;�ce�cx;�cz�chJ�c��cpJ�c��cKc�cKc�c(Mc� cLN$c�,clO0c
8c�P<c"Dc�RHc7PcxUTcL\cpg`cahc�vlcvtc�zxc��cL��c��cT��c��c,��c��cX��c��c`��c��c���c	�c���c�c���c3�c(��cH�c0��c]�cX��crcX�c�c`�c�ch� c�(cL�,c�4cX�8c�@c`�Dc�Lcd�PcXcl�\cdc(�hc/pc@�tcD|c���cY�c���cn�c���c��c�P�c��c���c��c���c��cP��c��c���c��c���c�c ��c�c|��c+c��c@c��cUc�cj$c��(c0c$�4c�<c��@c�Hc��Lc�Tch�Xc�`c��dc�lc��pcxc�|c�c���c+�c4��c@�c���cU�c���cj�c���c�c��c��cd��c��c��c��cL��c��c���c��c��c�c`cc�c' c$c<,c�0cQ8c,%<cfDc8*Hc{Pc�+Tc�\c�/`c�hc�3lc�tc�3xc��c�5�c��c�7�c��ct>�c�c�D�c#�c�D�c8�c�D�cM�c�D�cb�c�D�cw�c�I�c��c�I�c��c0V�c�cHVc�ch`c�c�` c�(c�b,c
	4c�f8c	kernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.cinclude/linux/srcu.hkernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.cinclude/linux/min_heap.hkernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.ckernel/events/core.cc�cXc`cPc�	c�cXc  c`$c�(c,",c�$0c\'4c�(8c`,<c:@ch;Dcp;Hc|;LclJPctJTcKXcK\c,M`cPNdcpOhc�Plc�Rpc|Utctgxc�v|c�z�cP��cX��c0��c\��cd��c���c���c���c,��c4��c\��c\��cd��cl��cP��c\��cd��ch��cp��c,��cD��c���c���c���c�T�c���c���cT��c���c���c$��c��c��c��c�c��c(�c�c��cl� c��$c��(c�,c��0c8�4c��8c��<c��@c�Dch�Hc�LcP�Pc��Tc��Xcd\c�`cdc�hc0%lc<*pc�+tc�3xc�3|c�5�c�7�cx>�c�D�c�D�c�D�c�D�c�D�c�I�c�I�c4V�cLV�cl`�c�`�c�b�c�fc$IcK3s8Jc�uc�w3�8J c�V$c0W(3s(8J(c��a �)v�)���@�)� �)������)�T��T�����T�������T�����TD`�(T��TT�<D��`� ��T����)v�(a �(c@� L���T*���Sc��a �)v�)w��)x��)y��)z��){`�)|@�)} �)~�)��)����d��)T����d��)����d��)��d`�)��d@�)��������d �)��d�)��?������*��d��(T�����(��l�A�o8e��(��� �e`�(f@�(T�o8�X8��� �� �)�@�)�o8���|8� �)�o8�\8��d#�e �(f�(T�E��e��e��)e��)ec�ec�)e��)`C�)`#�)`�)`��)y�)e��(�8e#�e�)z�)�p�@d��)���'�S��(~�(} �(|@�({`�(z��(y��(x��(w��(v�(a �(c@� Lc��a`�)v@�)w �)x�)��T��T��hD���(�FX���b�(�D�T�D��(���_P����(�T*���S����)��T�x�(w �(v@�(a`�(c�� LG(H(0GH4HH8B�<Gp@HpDG�HH�PB)TG�XH�\G�`H�lB)pG�tH�xG�|H��B)�B��G�H�B��B��G
�H
�B��G��H��G��H��BT$Gh(Hh8B�<GN@HNDG�HH�PGPTHPXG�H\H�HdG�hH�pGatHa|G���H���G�(�H�(�G��H��Gm�Hm�G`�H`�B��B�@B��G@�H@�BQ�G��H��B�G`H`G�H�,B`�LBTXG@\H@lG@pH@tB@�ctcxcDcHc�/���'�	4perf: Dynamic interrupt throttling disabled, can hang your system!
%s: Invalid KSYMBOL type 0x%x
perf_event_ksymbolnr_addr_filtersCan not register anonymous pmu.
&child->perf_event_mutexsoftwarecpu_clocktask_clockhw_breakpoint initialization failed with: %dperf_event%s
perf_duration_warn6perf: interrupt took too long (%lld > %lld), lowering kernel.perf_event_max_sample_rate to %d
Popping an empty heapunexpected event refcount: %ld; ptr=%p
//enomem//toolong[heap][stack]//anon%d
%sevent_sourcetypeperf_event_mux_interval_ms[perf_event]&event->child_mutex&event->waitq&event->mmap_mutex&ctx->mutex ,
filterstartstop%u/%u@%s%u/%u%u@%s%u&swhash->hlist_mutexFailed to register pmu: %s, reason %d
$������������������
���� $�� x0�~PPXP``h`�@abc c@c `c�f0�g8@h@�hH`iP�iH�k`�lh@mp�mx@n��n o� `�8@�p����HHPHX��xA�������XXhp ����������`����� ! "(#0$8%@&H'P(X)`*h+p,x-����6H`9P :`Ex�I��I} �0�@�P�`�p���Q�@R�`V�`V��//enomemClangBuiltLinux clang version 18.1.6 (https://github.com/llvm/llvm-project.git 1118c2e05e67a36ed8ca250524525cdb66a55256)���������E��V]_a��h�qpoutsvw��������������N&<���M@�DTWZ-y�����m������������������������������������������������)*,78�����HQU�������R[^`�f��ik�n�{���������������Y�S����X�����x�������z������������&��� 9& �0$@�P�`�"p!��#�����z�����Y�[�&f�$F{ ����`�H��d*$������!���tt$�v@�h�@� ; ���< �
��`�� �(0�@�� ��& [p�\���lj`��' ��q�(����*'����
`��m8`@�� 7��J�@N����@�LP  ��� 4�����!X��"�%��<�" �B�,�#�-H%%�;�� �@K�hK�|+ ��/��di�Up! V8� u(�@��"$�]�k�d��8T@��,��`h��0��m�4�`o05 t���T�"�� u��H@8�|�$�~8�@ T(�@�`0`��<���X�`�4�%`��d#���`��@����	��������H*���h�	@ t9#� ��%���
@`!�?"��`��l ��"t�@%��&�f @�x�����6���� ���'P�
@�8� �@TZ*U	@*�\`(��(V�#XU@�o�.�*�+�Q@�<���<�`4�3���/N�5,`�|4������x%`��YVh ��`�
�

���p01�0a�0�a�	
���%�x�`��d<;�p�|!@�,!��@ �rP+��
�d�(�`�� ���p`��]��L=`�T����� �������u�@�@�@��UDuP�@X��T�!�8$��P�� �% ��� $`89�8%���� x��*��
@(�
 (�
(�%6T�$`J�`9�� :�
/
�L0�P��
�� |�L0E�(#QT� `Qd�����I -&�I�V�QP�@R�`WX'	`V�a�\�D	@a�N
�c;�e�$b�Nc � c�@c6%`cV	�f�a jp�$�g�_@hd�h�`idH%�i@k	�k��$�l�s@mh�ml@nh]%�nLT oX�*
)\'/+�' �'(t*0�)8�*@x(H8(P+*X�)`K)h�(p�)x(�X�h(1� F� }�  !�`|= 
�I&`��`4@��@"p��#��"�$�!`)��#�r0�`xl��~��������8����i��4�� ���Uv ������S"�{� 	 $�@$��qI4��&`�$�x�& 
��!�&�
���$�"���`��x���H'
�>��

O �%��'l1!"@)�o
@+�	 ,L�!��,��!&�#`-4�
P/) 0d4{�W�`A��<B<	�
<)�#����+��LP"@MC"#]"`Nx"��O(}�&�P�	d��`V�	 W�

�%A

0
x
g
S
x Z�&eo`_�����]!��d<��e��ft�@j,� �n�E$�r7tu3��"xT��x y��z�j�{��{��{��h&g�	�	��!���%��2P  �=���$v#����m�%��#�!:7	�%SG�#�F
�
�_$W�%i;z�!�$EC��������$���	F��`
��HA
�� ? ��@�$����8�����	
��
��s���!���	%3"�Of&*Uc!-<�W��D*�*R#�
�
�
�k��
s%�
.�hl���c&
<��%#�
}W0#K!_$��t&�&��F��B���   ��!����!��!    ��!����!��!  ����!    @ @��!@����!@��!@  @����!@��!@  @����! 0 0��!0����!0��!0  0����!0��!0  0����! 0 0��!0����!0��!0      ��! ����! ��!    ����! ��!        ��! ����! ��!    P P��!P����!P����!P����!P��!P  P����!    ��! ����! ��!       ��! ����! ��!    ����! ��!       ��! ����! ��!    ����! ��!       ��! ����! ��!      ��! ����! ��!     ��!����!��!  ����!  p p��!p����!p��!p  p����! @ @��!@����!@��!@  @����!@����! 0 0��!0����!0��!0  0����!0����!0��!0  0����! � ���!�����!�����!�����!�����!�����!���!�  �����!  ��!����!��!   0 0��!0����!0��!0  0����!0��!0  0����! @ @��!@����!@��!@  @����! � ���!�����!�����!���!�  �����! 0 0��!0����!0��!0  0����!0��!0  0����!0��!0  0����!0��!0     ��! ����! ��!    ����! ��!        ��! ����! ��!    ����! ��!    ����! ��!     ��!   0 0��!0����!0��!0   @ @��!@����!@��!@   0 0��!0����!0��!0  0����! @ @��!@����!@��!@  @����! ` `��!`����!`����!`����!`����!`��!`   P P��!P����!P����!P��!P    0 0��!0����!0��!0  0����!    ��! ����! ��!    ����!   0 0��!0����!0��!0    0 0��!0����!0��!0   0 0��!0����!0��!0  0����!0��!0   � ���!�����!�����!���!�  �����! � ���!�����!�����!�����!���!�  �����!�����!�����!  ��!   p p��!p����!p��!p  p����! p p��!p����!p��!p  p����!  p p��!p����!p��!p  p����! p p��!p����!p��!p  p����! � ���!�����!���!�  �����! � ���!�����!�����!�����!�����!���!�  �����! 0 0��!0����!0��!0  0����!  ��!����!��!   P P��!P����!P��!P  P����! � ���!�����!���!�  �����! p p��!p����!p��!p  p����! @ @��!@����!@��!@  @����! � ���!�����!�����!���!�  �����!    ��! ����! ����! ����! ��!    ����! � ���!�����!�����!�����!���!�  �����! � ���!�����!�����!�����!���!�  �����! � ���!�����!���!�  �����! � ���!�����!�����!���!�  �����! � ���!�����!�����!���!�  �����! � ���!�����!�����!���!�  �����! P P��!P����!P��!P  P����! � ���!�����!�����!���!�  �����!  � ���!�����!�����!�����!���!�  �����!     ��! ����! ��!    � ���!�����!���!�  �����!   � ���!�����!�����!���!�  �����!    ��! ����! ��!    ����! ��!      @ @��!@����!@����!@����!@��!@  @����! 0 0��!0����!0��!0  0����!0��!0    ��!   ` `��!`����!`����!`��!`  `����!    ��! ����! ��!    ����!   ��!          ��!����!��!     ��! ����! ��!    ����! P P��!P����!P��!P  P����!P����! � ���!�����!���!�  �����! � ���!�����!�����!���!�  �����! @ @��!@����!@��!@  @����!   � ���!�����!�����!���!�  �����!���!�  �����! 0 0��!0����!0��!0  0����! � ���!�����!���!�  �����! P P��!P����!P����!P����!P����!P����!P��!P   � ���!�����!���!�  �����! � ���!�����!���!�  �����!    ��!����!��!    ` `��!`����!`��!`  `����! @ @��!@����!@��!@  @����! 0 0��!0����!0��!0    ��!      ��! ����! ��!    ` `��!`����!`��!`  `����!  ��!����!��!   � ���!�����!�����!���!�  �����!   ��!  ��!   @ @��!@����!@��!@  @����!@��!@  @����!      0 0��!0����!0��!0   � ���!�����!�����!���!�  �����! 0 0��!0����!0��!0  0����!  ��!����!��!      ��! ����! ����! ��!     0 0��!0����!0��!0  0����!    ��! ����! ����! ����! ��!       ��! ����! ����! ��!   P P��!P����!P����!P����!P��!P  P����!P��!P  P����! 0 0��!0����!0��!0  0����!0��!0   ` `��!`����!`����!`��!`  `����! ` `��!`����!`����!`����!`����!`����!`����!`����!`����!`����!`��!`  `����!`����!`����!`����! @ @��!@����!@��!@  @����!  ��!����!����!����!����!����!����!����!����!����!����!��!  ����! � ���!�����!�����!�����!�����!���!�  �����! 0 0��!0����!0��!0  0����!0��!0  0����!0��!0  0����!     ��! ����! ����! ��!   0 0��!0����!0����!0��!0   @ @��!@����!@��!@   P P��!P����!P��!P     ��!����!��!     ��!����!����!����!����!����!����!��!  ����!����!����! p p��!p����!p��!p  p����!    ��! ����! ��!    ����!       ��! ����! ��!    ����! � ���!�����!���!�  �����! P P��!P����!P��!P  P����!   ��!����!��!    ��!      ��! ����! ��!     P P��!P����!P����!P����!P��!P  P����! @ @��!@����!@��!@  @����!@����!@����!@��!@  @����!@����!  ��!����!��!  ����!��!  0 0��!0����!0��!0  0����! @ @��!@����!@��!@  @����!@��!@  @����! � ���!�����!�����!���!�  �����! � ���!�����!�����!���!�  �����!  ��!����!����!����!����!����!����!��!  ����! � ���!�����!�����!���!�  �����!    ��!    ��!   � ���!�����!���!�  �����! 0 0��!0����!0��!0   � ���!�����!���!�  �����!         ` `��!`����!`��!`  `����!  ��!����!��!  ����!��!      ��! ����! ��!     ��!����!��!  ����!     ��! ����! ��!    ����! ��!   @ @��!@����!@��!@  @����!    ��! ����! ��!    ����!     P P��!P����!P��!P  P����! 0 0��!0����!0��!0  0����!0��!0  0����!    ��! ����! ��!    ����! ��!    0 0��!0����!0��!0  0����!    ��! ����! ��!    ����! 0 0��!0����!0��!0  0����!  ��!����!��!   � ���!�����!���!�  �����!    ��! ����! ��!    ����! p p��!p����!p����!p��!p  p����! ` `��!`����!`��!`  `����!  ��!  0 0��!0����!0��!0   @ @��!@����!@����!@��!@    ��!����!��!   � ���!�����!�����!�����!���!�  �����! 0 0��!0����!0��!0    ��!����!��!    ��!����!��!    � ���!�����!�����!���!�  �����!    ��! ����! ��!    ����! ` `��!`����!`��!`   p p��!p����!p��!p  p����! @ @��!@����!@��!@  @����! 0 0��!0����!0��!0      ��! ����! ��!    ����!  ��!      p p��!p����!p��!p  p����! @ @��!@����!@����!@��!@    ��!����!��!    ��!����!��!      ��! ����! ��!     ��!����!��!  ����!��!      ��! ����! ��!       ��! ����! ��!   @ @��!@����!@����!@��!@  @����!  ��!����!��!    ��!����!��!      ��! ����! ��!        ��! ����! ��!     ��!����!��!   p p��!p����!p��!p   � ���!�����!�����!���!�  �����!  ��!  ��!  ��!����!��!  ����! � ���!�����!���!�     ��! ����! ��!   ccc c(c,c0cc c$c(c ,c$0c(4c,8c�<c�@c�Dc�Hc�Lc�Pc�Tc�Xc�\c�`c$dc@hcDlcHpcLtc�xc�|c��c��cH�cL�cP�cT�cd�c��c��c��c��c �c$�c(�c,�c@�cD�cH�cL�cT�c`�cd�ch�cl�c��c��c��c��c��c��c��c��c0c4c8c<cHcLcPcTc` cp$c�(c�,c�0c�4c�8c�<c�@c�DcHcLcPcTc�Xc�\c	`c	dc|	hc�	lc�	pc�	tc�	xc�	|c
�c
�c
�c
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�
�c�c�cL�cP�cT�cX�c`�cd�ch�cl�c��c��c��c��c��c��c��c��cccccTcXc\cdch cl$c
(c
,c
0c
4c 
8c$
<c(
@c,
Dc�
Hc�
Lc�
Pc�
Tc�
Xc�
\cd`c�dc�hc�lc�pc`tcdxch|cl�c��c��c��c��c��c�c�c �c$�c��c��c�c�c�c�c��c��c��c��c��c��c�cH�cL�cP�cT�c\�c`�cd�ch�cl�c�c�c�c�cc c�c�c� c�$c�(c�,c�0c�4c8c<c@cDclHcpLctPcxTc�Xc�\c�`c�dc�hc�lc�pc�tc�xc|c�c�c�c��c��c��c��c�c�c�c�c$�c@�cD�cH�cL�c��c��c��c��c��c��c��c��c��c��c��c��c��c��c��c��c�c�c�c�c�c�c�c c  c $c$ (c( ,c, 0ct 4cx 8c| <c� @c� Dc� Hc� Lc� Pc� Tc� Xc!\c!`c!dc!hch!lcl!pcp!tct!xc�!|c�!�c�!�c�!�c�!�c�!�c�!�c�!�c�!�c"�c"�c0"�c4"�c8"�c@"�cD"�cH"�cL"�c�"�c�"�c�"�c�"�c�"�c�"�c�"�c�"�c�#�c�#�c�#�c�#�c�#�c�#�c�#�c�#c|$c�$c�$c�$c�$c�$c�$c�$ c�$$c�%(c�%,c�%0c�%4c�%8c�%<c�%@c�%Dc�%Hc&Lc &Pc�&Tc�&Xc�&\c�&`c�'dc�'hc�'lc�'pc�'tc�'xc�'|c�'�c(�c (�c )�c$)�c()�c,)�c@)�cD)�c`)�cd)�ch)�cl)�c+�c+�c+�c +�c0+�c@+�cD+�cH+�cL+�c�+�c�+�c�+�c�+�c,�c ,�cl,�c�,�c�,�c�,�c�,c�,c�,cL-cP-cT-cX-c`-c�- c�-$c�-(c�-,c�-0c�.4c�.8c�.<c�.@c/Dc/Hc/Lc/Pc�/Tc�/Xc�/\c�/`c0dc0hc0lc0pc 0tc$0xc(0|c,0�c�4�c�4�cX;�c\;�c`;�cd;�c�;�c�;�c�;�c�;�c�;�c�=�c�=�c�>�c�>�c�?�c�?�c�?�c�?�c@�c @�c�@�c�@�cPA�c`A�c�A�c�A�c�A�c�A�c�A�cB�cBcBcBc�Jc�Jc�JcKc<Kc@K cDK$cHK(cLK,c�L0c�L4c�L8c�L<c�L@c�LDc0MHc@MLcDMPcHMTcLMXc@N\cDN`cHNdcLNhcXNlc`NpcdNtchNxclN|c`O�cdO�chO�clO�cxO�c�O�c�O�c�O�c�O�c�P�c�P�c�P�c�P�c�P�c�P�c�P�c�P�c�P�c�S�c�S�c<T�c@T�c|T�c�T�cTU�cXU�c\U�c`U�c�U�c�U�c�U�c�U�c�UcVcVcVcVcVc Vc$Vc(V c,V$cLV(cPV,cTV0cXV4c`V8cdV<chV@clVDcWHcWLcWPcWTcWXc W\c$W`c(Wdc,Whc�Ylc�YpcZtcZxcZ|c Z�c$Z�c(Z�c,Z�c�Z�c[�c[�c[�c[�c [�c$[�c([�c,[�c|]�c�]�c�]�c�]�c�]�c�]�c�]�c�]�c�]�c�]�c_�cL_�cP_�cT_�cX_�c\_�c`_�cd_�ch_�cl_	ch`	cp`	c�a	c�a	c�c	c�c	c�c	c�c 	cpd$	c�d(	c�d,	c�d0	c�d4	ce8	c e<	cXe@	c�eD	c�eH	c�eL	c�eP	c�eT	c�eX	c�e\	c�e`	c�ed	c�eh	c@fl	cHfp	c�ft	c�fx	c�f|	c�f�	c�f�	c�f�	c�f�	c�f�	c�f�	c�f�	c�f�	cDh�	cHh�	cLh�	cPh�	cTh�	c`h�	cdh�	chh�	clh�	c�h�	c�i�	cj�	cj�	c j�	c$j�	c(j�	c@j�	cDj�	cHj�	cLj�	ck�	c k�	c\m�	c`m�	cdm
chm
clm
c�m
c�m
c�m
c�m
c�m
chn 
c�n$
c�n(
c�n,
c�n0
c�n4
c�n8
c�n<
c�n@
c�nD
c8oH
c<oL
c@oP
cDoT
cHoX
c`o\
cdo`
chod
cloh
c�ol
cLrp
c�rt
c�rx
c�r|
c�r�
c�r�
c�r�
c�r�
c�r�
c�r�
c�r�
c�r�
cTs�
c\s�
c�s�
c�s�
c�s�
c�s�
c�s�
c�s�
c�s�
ct�
ct�
c t�
c$t�
c(t�
c,t�
c�t�
c�t�
c�t�
cu�
c u�
c$u�
c(u�
c,u�
c�w�
c�wc�wc�wc�wcxcTxc`xc�xc�x cy$cy(cy,cLy0cdz4c�z8c�z<c�z@c�zDc�zHc�zLc�zPc�zTc�zXcp{\ct{`cx{dc|{hc�{lc�{pc�{tc�{xc�{|c�{�c�{�c�{�c�{�c�{�c�{�c�{�c@|�cL|�cT|�c�|�c�|�c�|�c�|�c�|�c�|�c�|�c�|�c�|�c�|�c�}�c�}�c�}�c�}�cd~�ch~�cl~�cp~�c�~�c�~�c�~�c�~�c�~c�~c�~c�~c�~c�~c�c�cā cȁ$ć(cЁ,c\�0c`�4cd�8ch�<cl�@c �Dc$�Hc(�Lc,�PcX�Tc`�Xc��\c��`c܃dc��hc�lc��pc��tc�xc<�|c@��cD��c`��ch��c���c���c���c���c���cȄ�c���c��c��c��c���c���c���c���c���c���ct��cx��c|��c���ch��c���c���c���c���c��c��c���c�
c,�
c0�
c��
c��
cĐ
cȐ
c̐
c�� 
c��$
c��(
c��,
c`�0
cd�4
ch�8
cl�<
c$�@
c0�D
c̞H
cОL
cԞP
c؞T
c�X
c �\
c$�`
c(�d
c,�h
c�l
c �p
c$�t
c(�x
c8�|
c@��
ch��
cp��
c���
c���
cġ�
cȡ�
c̡�
c\��
c`��
c���
c���
c���
c��
cL��
cP��
cT��
cX��
ct��
c���
c���
c���
c���
c@��
cD��
cH��
cL��
cl��
c���
c���
c���
c���
cH�cL�cP�cT�cX�c`�cd�ch�cl� c��$c��(c<�,c@�0cة4c�8ch�<cp�@cЪDcԪHcتLcܪPc�Tc�Xc�\c�`c��dc��hc��lc��pc��tc��xcĭ|cȭ�c̭�c$��c(��c,��c0��c@��cx��c���c���c���c���c���c���cܰ�c��c��c��c��c<��c@��cD��cH��cL��c���c���c��c��cd��c���c���c���c��c��c��c��c��c��c��cĴcȴ c̴$c��(c��,c��0c��4c��8c��<c��@cĵDcȵHcԵLc�Pc�Tc�Xc�\cL�`cP�dcT�hcX�lc`�pcd�tch�xcl�|c,��c0��c4��c8��c<��c@��cD��cH��cL��c`��cd��ch��cl��c���c���c���c���c��c��c���c���c���c���c���cȹ�c��c��c��c��c��c��c<��c@�cD�c`�cd�ch�cl�cd�ch�cl� cp�$c��(c��,c��0c��4c��8c��<ct�@c��Dc�Hc�Lc$�Pc@�TcD�Xc`�\c�`c�dc�hc�lc�pcؿtcܿxc�|c��c��c��c��c��c,��c0��c���c���c���c���c���c���c���c���c���c���c���c���c���c���c���c��c��c��c8��c<��c@��cD��c`��cd��ch��cl�c��c��c��c��c��c��c�c(� c@�$cD�(cH�,cL�0c��4c��8c��<c��@c��Dc��Hc��Lc��Pc��Tc��Xc��\c$�`c0�dcH�hcL�lcP�pcT�tc`�xcd�|ch��cl��c���c���c���c���c���c���c���c���c���c���c,��c0��c���c���c���c���c��c��c ��c$��c,��c@��cD��cH��cL��cx��c|��c���c���cT��cX�c\�c��c��c��c��c��c�c � c��$c��(c��,c��0c��4c��8c��<c��@c��Dc,�Hc0�Lc��Pc�Tc��Xc��\c��`c�dcx�hc��lc�pc�tct�xc��|c���c���c\��c`��cd��ch��c���c���cd��cp��c��c��c���c���c���c���c���c���c��c��c��c8��c@��cD��cH��cL��c���c���c���c���c(��cP��cl�c��c��c��c��c��c��c��c� c�$c�(c �,c\�0c`�4cd�8ch�<c��@c��Dc��Hc��Lc��Pc�Tc8�Xc@�\cx�`c��dc��hc��lc��pc��tc��xc��|c���c���c���c ��c$��c(��c,��c\��c`��cd��ch��c���c���c���c���c���c���c��c ��c$��c(��c,��cH��cP��c���c���c���c���c���c���c��c��cP�cT�cX�c\�c`�cd�ch�cl�c�� c��$c��(c��,c�0c�4c�8c�<c��@c��Dc��Hc��Lc��Pc(�Tc0�Xc(�\c,�`c0�dc\�hc`�lcd�pch�tcp�xc��|c���c���c���c���c(��c���c���c���c���c���c���c���c���c���c���c���c���c���c���c$��c,��c���c���c���c���c���c���c���c���c���c���c���c��c��c��c��c�c�c�c�c� c �$c0�(c@�,c��0c��4c<�8c@�<cD�@cH�DcL�Hc8�Lc<�Pc@�TcD�Xc��\c��`c��dc��hc��lc��pc��tc��xc��|c���c��c��c��c��c(��c,��c0��c4��c8��c@��c|��c���c���c���c���c���c���c���c���c���c���c���c��c��c��c ��c$��c(��c,��c���c���c��c��c��c��c��c��c��c��c,� c0�$c��(c��,c��0c�4c�8c�<c�@c �Dc$�Hc(�Lc,�Pc��Tc��Xc��\c��`c��dc��hclc pc�tc�xc�|c��c��c��c�c �c$�c(�c,�c��c��c��c��c��c��c��c�c�c�cT�cX�c\�c`�ch�c��c��c��c��c4�c8�c<�c@�c��c�c�c�c�ccccc\ c|$c�(c�,c�0c�4c�8c�<c�@c�Dc	Hc�
LcPcTcXc \c$`c@dcDhcHlcLpc�tc�xc�|c��c�c(�c4�cT�cl�c0�cp�ct�cx�c|�c�c�c �c$�c(�c,�cd�c��c��c��c��c��c�c�c �cD�c`�cd�ch�c��c��c�c�c�c�c�c�c�c�c� c�$c�(cx,c|0c�4c�8c�<c�@c�Dc�Hc�Lc@PcDTcHXcL\c``cddchhcllc�pc�tc�xc�|c��c��c��c�c��c��c�c �c��c��c��c��c��c��c�c �c��c��c��c��c��c8�c<�c@�cD�c��c��c��c��c��c �c �c c c c  c$ c( c@ cD cH  cL $c� (c� ,c� 0c� 4c� 8c� <c� @c� Dc,!Hc0!Lc4!Pc8!TcD!Xc`!\c�!`c"dc"hc"lc"pc�"tc�"xc�"|c�"�c�"�c�"�c�"�c�"�c�"�c�"�c$�c$�c$�c$�c4%�c@%�c�&�c�&�c�&�c@'�cD'�cH'�cL'�c�'�c�'�c�'�c(�c(�c (�c((�c@(�cH(�c`(�cd(�ch(�cl(c,*c0*c4*c8*c@*cD*cH*cL* c�+$c�+(c�+,c�+0c�+4c�+8c�+<c�+@c�+Dc�+Hc�+Lc�+Pc�+TcH.XcL.\cP.`cT.dc�.hc�.lc�.pc�.tc�.xc�.|c�.�c�.�c�/�c�/�c�/�c�/�c�/�c�/�c�/�c�/�c�/�c�3�c�3�c�3�c�3�c�3�c�3�c�3�c�3�c�3�c45�c85�c<5�c@5�c�5�c�5�c�5�c�5�c�5�c�5�c�5�c�5�c�5c6c6c6c6c�8c�8c�8c�8 cT9$c`9(cd9,ch90cl94c�98c:<c:@c:Dc:Hc :Lc$:Pc(:Tc,:Xc>\c>`c�Ddc�Dhc�Dlc�Dpc�DtcExcE|cE�cE�c\I�c`I�cdI�chI�c�I�c�I�c�I�c�I�c�I�c�I�c�I�c�I�c�I�c8J�c<J�c@J�cDJ�c`J�cdJ�chJ�clJ�c�K�c�K�chL�clL�cpL�ctL�c�L�c�L�c�L�c�Lc�Lc�Lc�Lc�Lc�Lc�Lc�Lc�L c�M$c�M(c<N,c@N0c�O4c�O8c�O<c�O@c�ODcPHcPLcPPcPTc�PXc�P\c�P`c�PdcQhc0Qlc4Qpc8QtcHQxcLQ|cPQ�cTQ�c`Q�cdQ�chQ�clQ�c�Q�c�Q�c�Q�c�Q�c�Q�c0R�c@R�cDR�cHR�cLR�c�S�c�S�cV�cV�cV�c V�cTV�c`V�cdV�chV�clV�c$W�c(W�c,W�c0W�cXW�c`WcdWchWclWc�Yc�Yc�Yc�Yc�Y c�Y$c�Y(c�Y,clZ0cpZ4ctZ8cxZ<c�\@c�\Dc�\Hc�\Lc�\PcH`TcL`XcP`\cT``c�`dc�`hc�`lc�`pc�`tc$axc(a|c,a�c0a�c@a�cDa�cHa�cLa�c�a�c�a�c�a�c�a�cb�cb�cb�c�b�c�b�c�b�cc�c(c�c@c�cLc�c`c�cdc�c�c�c�c�c�c�c�c�c�d�c�d�c�d�c�d�c�e�c�e�c�ec�ec�ecfcfc�fc�fc�fc�f c�f$cg(cg,cg0clg4cpg8ctg<c�g@c�gDc�gHc�gLc�gPc,hTc0hXc4h\c8h`c@hdcDhhcHhlcLhpc�htc�hxc�h|c�h�c�h�c�h�c�h�c�h�ci�ci�ci�ci�cDi�cHi�cLi�cPi�c`i�cdi�chi�cli�c�i�c�i�c�i�c�i�c�i�c�i�c�i�c�i�cj�cj�cj�c$j�c(j�c,j�chj�cPkc�kc�kc�kc�kc�kc�kc�kc�k c�k$cHl(cLl,cPl0cpl4c�l8c�l<c�l@c�lDcmHc mLc$mPc(mTc@mXcDm\cHm`cLmdc�mhc�mlc�mpc�mtc�mxc,n|c@n�cDn�cHn�cLn�c�n�c�n�c�n�c�n�c�n�c�n�c�n�c�n�co�co�co�co�c o�c$o�c(o�c,o�clp�cpp�ctp�cxp�c�p�c�p�c�p�c�p�c�p�c r�cTr�cXr�c\r c`r cdr c�r c�r c�r c�r c�r c�r  c�r$ c�( c�, c�0 c�4 c��8 c��< c��@ c��D c��H c��L c��P c�T c��X c��\ c��` c��d c��h c��l c��p c��t c��x c��'@�+��+�r �@��0�%��^�@�_�%
`a@@�f%92�{4	� Ԅ�� @��h
%	���0�@(� %�H���@��P%
�0��@H�`%� ��� @��%�ȝ�,p�bip�H
+2���V'��Q'@���%B���=@��%�!������@���%�	8��	@@�%�)2X��(d��0t�zh��L�o��X%"'H�H6_+���@k+�2| z+@S��%'
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Tue, 2024-06-04 at 23:25 -0700, Nathan Chancellor wrote:
> On Wed, Jun 05, 2024 at 01:54:24PM +0800, Xi Ruoyao wrote:
> > On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
> > > For what it's worth, I have noticed some warnings with clang that I
> > > don't see with GCC but I only filed an issue on our GitHub and never
> > > followed up on the mailing list, so sorry about that.
> > > 
> > > https://github.com/ClangBuiltLinux/linux/issues/2024
> > > 
> > > Might be tangential to this patch though but I felt it was worth
> > > mentioning.
> > 
> > The warnings in GCC build is definitely the issue handled by this patch.
> > But the warnings in Clang build should be a different issue.  Can you
> > attach the kernel/events/core.o file from the Clang build for analysis?
> > I guess we need to disable more optimization...
> 
> Sure thing. Let me know if there are any issues with the attachment.

Thanks!  I've simplified it and now even...

.global test
.type test,@function
test:

addi.d	$sp,$sp,-448
st.d	$ra,$sp,440
st.d	$fp,$sp,432
addi.d	$fp,$sp,448

# do something

addi.d	$sp,$fp,-448
ld.d	$fp,$sp,432
ld.d	$ra,$sp,440
addi.d	$sp,$sp,448
ret

.size test,.-test

is enough to trigger a objtool warning:

/home/xry111/t1.o: warning: objtool: test+0x20: return with modified stack frame

And to me this warning is bogus?

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Wed, 2024-06-05 at 18:57 +0800, Xi Ruoyao wrote:
> On Tue, 2024-06-04 at 23:25 -0700, Nathan Chancellor wrote:
> > On Wed, Jun 05, 2024 at 01:54:24PM +0800, Xi Ruoyao wrote:
> > > On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
> > > > For what it's worth, I have noticed some warnings with clang that I
> > > > don't see with GCC but I only filed an issue on our GitHub and never
> > > > followed up on the mailing list, so sorry about that.
> > > > 
> > > > https://github.com/ClangBuiltLinux/linux/issues/2024
> > > > 
> > > > Might be tangential to this patch though but I felt it was worth
> > > > mentioning.
> > > 
> > > The warnings in GCC build is definitely the issue handled by this patch.
> > > But the warnings in Clang build should be a different issue.  Can you
> > > attach the kernel/events/core.o file from the Clang build for analysis?
> > > I guess we need to disable more optimization...
> > 
> > Sure thing. Let me know if there are any issues with the attachment.
> 
> Thanks!  I've simplified it and now even...
> 
> .global test
> .type test,@function
> test:
> 
> addi.d	$sp,$sp,-448
> st.d	$ra,$sp,440
> st.d	$fp,$sp,432
> addi.d	$fp,$sp,448
> 
> # do something
> 
> addi.d	$sp,$fp,-448
> ld.d	$fp,$sp,432
> ld.d	$ra,$sp,440
> addi.d	$sp,$sp,448
> ret
> 
> .size test,.-test
> 
> is enough to trigger a objtool warning:
> 
> /home/xry111/t1.o: warning: objtool: test+0x20: return with modified stack frame
> 
> And to me this warning is bogus?

Minimal C reproducer:

struct x { _Alignas(64) char buf[128]; };

void f(struct x *p);
void g()
{
	struct x x = { .buf = "1145141919810" };
	f(&x);
}

Then objtool is unhappy to the object file produced with "clang -c -O2"
from this translation unit:

/home/xry111/t2.o: warning: objtool: g+0x50: return with modified stack frame

It seems CFI_BP has a very specific semantic in objtool and Clang does
not operates $fp in the expected way.  I'm not sure about my conclusion
though.  Maybe Peter can explain it better.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Wed, 2024-06-05 at 21:18 +0800, Xi Ruoyao wrote:
> On Wed, 2024-06-05 at 18:57 +0800, Xi Ruoyao wrote:
> > On Tue, 2024-06-04 at 23:25 -0700, Nathan Chancellor wrote:
> > > On Wed, Jun 05, 2024 at 01:54:24PM +0800, Xi Ruoyao wrote:
> > > > On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
> > > > > For what it's worth, I have noticed some warnings with clang that I
> > > > > don't see with GCC but I only filed an issue on our GitHub and never
> > > > > followed up on the mailing list, so sorry about that.
> > > > > 
> > > > > https://github.com/ClangBuiltLinux/linux/issues/2024
> > > > > 
> > > > > Might be tangential to this patch though but I felt it was worth
> > > > > mentioning.
> > > > 
> > > > The warnings in GCC build is definitely the issue handled by this patch.
> > > > But the warnings in Clang build should be a different issue.  Can you
> > > > attach the kernel/events/core.o file from the Clang build for analysis?
> > > > I guess we need to disable more optimization...
> > > 
> > > Sure thing. Let me know if there are any issues with the attachment.
> > 
> > Thanks!  I've simplified it and now even...
> > 
> > .global test
> > .type test,@function
> > test:
> > 
> > addi.d	$sp,$sp,-448
> > st.d	$ra,$sp,440
> > st.d	$fp,$sp,432
> > addi.d	$fp,$sp,448
> > 
> > # do something
> > 
> > addi.d	$sp,$fp,-448
> > ld.d	$fp,$sp,432
> > ld.d	$ra,$sp,440
> > addi.d	$sp,$sp,448
> > ret
> > 
> > .size test,.-test
> > 
> > is enough to trigger a objtool warning:
> > 
> > /home/xry111/t1.o: warning: objtool: test+0x20: return with modified stack frame
> > 
> > And to me this warning is bogus?
> 
> Minimal C reproducer:
> 
> struct x { _Alignas(64) char buf[128]; };
> 
> void f(struct x *p);
> void g()
> {
> 	struct x x = { .buf = "1145141919810" };
> 	f(&x);
> }
> 
> Then objtool is unhappy to the object file produced with "clang -c -O2"
> from this translation unit:
> 
> /home/xry111/t2.o: warning: objtool: g+0x50: return with modified stack frame
> 
> It seems CFI_BP has a very specific semantic in objtool and Clang does
> not operates $fp in the expected way.  I'm not sure about my conclusion
> though.  Maybe Peter can explain it better.

Another example: some simple rust code:

extern { fn f(x: &i64) -> i64; }

#[no_mangle]
fn g() -> i64 {
    let x = 114514;
    unsafe {f(&x)}
}

It's just lucky GCC doesn't use $fp as the frame pointer unless there's
some stupid code (VLA etc) thus the issue was not detected.


-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Jinyang He 1 year, 8 months ago
On 2024-06-05 23:13, Xi Ruoyao wrote:

> On Wed, 2024-06-05 at 21:18 +0800, Xi Ruoyao wrote:
>> On Wed, 2024-06-05 at 18:57 +0800, Xi Ruoyao wrote:
>>> On Tue, 2024-06-04 at 23:25 -0700, Nathan Chancellor wrote:
>>>> On Wed, Jun 05, 2024 at 01:54:24PM +0800, Xi Ruoyao wrote:
>>>>> On Tue, 2024-06-04 at 22:43 -0700, Nathan Chancellor wrote:
>>>>>> For what it's worth, I have noticed some warnings with clang that I
>>>>>> don't see with GCC but I only filed an issue on our GitHub and never
>>>>>> followed up on the mailing list, so sorry about that.
>>>>>>
>>>>>> https://github.com/ClangBuiltLinux/linux/issues/2024
>>>>>>
>>>>>> Might be tangential to this patch though but I felt it was worth
>>>>>> mentioning.
>>>>> The warnings in GCC build is definitely the issue handled by this patch.
>>>>> But the warnings in Clang build should be a different issue.  Can you
>>>>> attach the kernel/events/core.o file from the Clang build for analysis?
>>>>> I guess we need to disable more optimization...
>>>> Sure thing. Let me know if there are any issues with the attachment.
>>> Thanks!  I've simplified it and now even...
>>>
>>> .global test
>>> .type test,@function
>>> test:
>>>
>>> addi.d	$sp,$sp,-448
>>> st.d	$ra,$sp,440
>>> st.d	$fp,$sp,432
>>> addi.d	$fp,$sp,448
>>>
>>> # do something
>>>
>>> addi.d	$sp,$fp,-448
>>> ld.d	$fp,$sp,432
>>> ld.d	$ra,$sp,440
>>> addi.d	$sp,$sp,448
>>> ret
>>>
>>> .size test,.-test
>>>
>>> is enough to trigger a objtool warning:
>>>
>>> /home/xry111/t1.o: warning: objtool: test+0x20: return with modified stack frame
>>>
>>> And to me this warning is bogus?
>> Minimal C reproducer:
>>
>> struct x { _Alignas(64) char buf[128]; };
>>
>> void f(struct x *p);
>> void g()
>> {
>> 	struct x x = { .buf = "1145141919810" };
>> 	f(&x);
>> }
>>
>> Then objtool is unhappy to the object file produced with "clang -c -O2"
>> from this translation unit:
>>
>> /home/xry111/t2.o: warning: objtool: g+0x50: return with modified stack frame
>>
>> It seems CFI_BP has a very specific semantic in objtool and Clang does
>> not operates $fp in the expected way.  I'm not sure about my conclusion
>> though.  Maybe Peter can explain it better.
> Another example: some simple rust code:
>
> extern { fn f(x: &i64) -> i64; }
>
> #[no_mangle]
> fn g() -> i64 {
>      let x = 114514;
>      unsafe {f(&x)}
> }
>
> It's just lucky GCC doesn't use $fp as the frame pointer unless there's
> some stupid code (VLA etc) thus the issue was not detected.
>
>
I think this because we did not add arch special handle in 
update_cfi_state().
In our 419 repo this func has been renamed arch_update_insn_state (, now it
should be arch_update_cfi_state) and give some actions to deal with the
frame pointer case. If we support it we may deal with some case but for 
clang...

.global test
.type test,@function
test:

addi.d  $sp,$sp,-448
st.d    $ra,$sp,440
st.d    $fp,$sp,432
addi.d  $fp,$sp,448

# do something  <- not change $sp

# addi.d        $sp,$fp,-448  <- not restore sp from cfa(fp)
ld.d    $fp,$sp,432
ld.d    $ra,$sp,440
addi.d  $sp,$sp,448
ret

.size test,.-test

This will cause warning, too. (Gcc should be ok, I don't test.)

source.c: (clang 19, based 0c1c0d53931, -g)
void *foo() { return __builtin_frame_address(0); }

asm.s:
         .cfi_sections .debug_frame
         .cfi_startproc
# %bb.0:
         addi.d  $sp, $sp, -16
         .cfi_def_cfa_offset 16
         st.d    $ra, $sp, 8                     # 8-byte Folded Spill
         st.d    $fp, $sp, 0                     # 8-byte Folded Spill
         .cfi_offset 1, -8
         .cfi_offset 22, -16
         addi.d  $fp, $sp, 16
         .cfi_def_cfa 22, 0                    <- define cfa is $r22
.Ltmp0:
         .loc    0 1 22 prologue_end             # hello.c:1:22
         move    $a0, $fp
         ld.d    $fp, $sp, 0                     # 8-byte Folded Reload  
<- restore regs from non-cfa ?
         ld.d    $ra, $sp, 8                     # 8-byte Folded Reload  
<- restore regs from non-cfa ?
         .loc    0 1 15 epilogue_begin is_stmt 0 # hello.c:1:15
         addi.d  $sp, $sp, 16                                            
<- restore prev-sp from non-cfa ?
         ret

Maybe Clang have anything wrong?


Attach: tmp fix by support arch_update_insn_state.


Thanks,

Jinyang

Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Wed, 2024-06-05 at 23:47 +0800, Jinyang He wrote:
> In our 419 repo this func has been renamed arch_update_insn_state (, now it
> should be arch_update_cfi_state) and give some actions to deal with the
> frame pointer case. If we support it we may deal with some case but for 
> clang...
> 
> .global test
> .type test,@function
> test:
> 
> addi.d  $sp,$sp,-448
> st.d    $ra,$sp,440
> st.d    $fp,$sp,432
> addi.d  $fp,$sp,448
> 
> # do something  <- not change $sp

This is simplified.  In the real code $sp is changed, something like:

bstrins.d $sp, $zero, 5, 0

$fp is needed to allow restoring $sp after realigning $sp for some local
over-aligned variables, as demonstrated by this example:

struct x { _Alignas(64) char buf[128]; };

void f(struct x *p);
void g()
{
	struct x x = { .buf = "1145141919810" };
	f(&x);
}

GCC does not align $sp, it produces the aligned address for x from an
unaligned $sp instead:

addi.d $a0, $sp, 63
srli.d $a0, $a0, 6
slli.d $a0, $a0, 6

thus there's no need to use $fp.

/* snip */

> <- restore regs from non-cfa ?
>          ld.d    $ra, $sp, 8                     # 8-byte Folded Reload  

/* snip */

> Maybe Clang have anything wrong?

I don't think we must restore regs based on $fp just because CFA is
based on $fp.  The .cfi directives only provides *one* possible way to
restore the regs.  This way is convenient to the unwinder, but not
necessarily convenient to the CPU thus the real instruction sequence can
use a different way.  They only need to be "equivalent", not necessarily
"exactly same."

Also note that .cfi_* directives are completely irrelevant for objtool.
THe objtool synthesizes the ORC unwind info from the machine
instructions, not the DWARF unwind info coded with .cfi_*.

The entire point of ORC is avoiding DWARF.  It's even named ORC because
ORC and DWARF are sworn enemies in some tales.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Jinyang He 1 year, 8 months ago
On 2024-06-06 03:05, Xi Ruoyao wrote:

> On Wed, 2024-06-05 at 23:47 +0800, Jinyang He wrote:
>> In our 419 repo this func has been renamed arch_update_insn_state (, now it
>> should be arch_update_cfi_state) and give some actions to deal with the
>> frame pointer case. If we support it we may deal with some case but for
>> clang...
>>
>> .global test
>> .type test,@function
>> test:
>>
>> addi.d  $sp,$sp,-448
>> st.d    $ra,$sp,440
>> st.d    $fp,$sp,432
>> addi.d  $fp,$sp,448
>>
>> # do something  <- not change $sp
> This is simplified.  In the real code $sp is changed, something like:
>
> bstrins.d $sp, $zero, 5, 0
>
> $fp is needed to allow restoring $sp after realigning $sp for some local
> over-aligned variables, as demonstrated by this example:
>
> struct x { _Alignas(64) char buf[128]; };
>
> void f(struct x *p);
> void g()
> {
> 	struct x x = { .buf = "1145141919810" };
> 	f(&x);
> }
>
> GCC does not align $sp, it produces the aligned address for x from an
> unaligned $sp instead:
>
> addi.d $a0, $sp, 63
> srli.d $a0, $a0, 6
> slli.d $a0, $a0, 6
>
> thus there's no need to use $fp.
>
> /* snip */
>
>> <- restore regs from non-cfa ?
>>           ld.d    $ra, $sp, 8                     # 8-byte Folded Reload
> /* snip */
>
>> Maybe Clang have anything wrong?
> I don't think we must restore regs based on $fp just because CFA is
> based on $fp.

You are right.


> The .cfi directives only provides *one* possible way to
> restore the regs.
What I just confused is that there is no ".cfi_*"
in the eplogue by clang, which may cause wrong backtrace if gdb set

breakpoint there and backtrace. (But this is out of this topic.)



> This way is convenient to the unwinder, but not
> necessarily convenient to the CPU thus the real instruction sequence can
> use a different way.  They only need to be "equivalent", not necessarily
> "exactly same."
>
> Also note that .cfi_* directives are completely irrelevant for objtool.
> THe objtool synthesizes the ORC unwind info from the machine
> instructions, not the DWARF unwind info coded with .cfi_*.
> The entire point of ORC is avoiding DWARF.  It's even named ORC because
> ORC and DWARF are sworn enemies in some tales.
Yes.
The yestorday attachment has something wrong.
Enmmmm.... (It seems I'm careless.) diff is,

                 switch (op->src.type) {
                 case OP_SRC_ADD:
                         if (op->dest.reg == CFI_SP && op->src.reg == 
CFI_SP) {
-                               /* addi.d sp, sp, imm */
-                               cfi->stack_size -= op->src.offset;
-                               if (cfa->base == CFI_SP)
                                 /* addi.d sp, sp, imm */
                                 cfi->stack_size -= op->src.offset;
                                 if (cfa->base == CFI_SP)

Or you can get the tmp fix by [1].

[1]: 
https://github.com/MQ-mengqing/linux/commit/c1f7df3eb2a2bb7a1c10c2aa6e0e3d585b457352

Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Thu, 2024-06-06 at 10:10 +0800, Jinyang He wrote:
> What I just confused is that there is no ".cfi_*"
> in the eplogue by clang, which may cause wrong backtrace if gdb set
> 
> breakpoint there and backtrace. (But this is out of this topic.)

I don't think it'll cause wrong backtrace.  The real assemble code has
restored the registers and missing .cfi_restore will just make unwinder
restore them again.  There are redundant works but not breakages.

For objtool the main difference seems a thing explained in
https://maskray.me/blog/2020-11-08-stack-unwinding by Fangrui:

   Note: on RISC-V and LoongArch, the stack slot for the previous frame
   pointer is stored at fp[-2] instead of fp[0]. See [Consider
   standardising which stack slot fp points
   to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
   for the RISC-V discussion.

So perhaps we just need to code a constant named "PREV_BP_OFFSET" or
something in arch/ and use it in update_cfi_state() instead of fully re-
implement the entire function?
-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Jinyang He 1 year, 8 months ago
On 2024-06-07 13:42, Xi Ruoyao wrote:
> On Thu, 2024-06-06 at 10:10 +0800, Jinyang He wrote:
>> What I just confused is that there is no ".cfi_*"
>> in the eplogue by clang, which may cause wrong backtrace if gdb set
>>
>> breakpoint there and backtrace. (But this is out of this topic.)
> I don't think it'll cause wrong backtrace.  The real assemble code has
> restored the registers and missing .cfi_restore will just make unwinder
> restore them again.  There are redundant works but not breakages.

$ cat hello.c:
extern void __attribute__((noinline)) foo() {}
int main() {
   foo();
   return (int)(long)__builtin_frame_address(0);
}
$ clang hello.c -S -g -o hello.s -O0 -fPIC
$ cat hello.s:
[...]
         addi.d  $sp, $sp, -32
         .cfi_def_cfa_offset 32
         st.d    $ra, $sp, 24                    # 8-byte Folded Spill
         st.d    $fp, $sp, 16                    # 8-byte Folded Spill
         .cfi_offset 1, -8
         .cfi_offset 22, -16
         addi.d  $fp, $sp, 32
         .cfi_def_cfa 22, 0
         move    $a0, $zero
         st.w    $a0, $fp, -20
.Ltmp2:
         .loc    0 3 3 prologue_end              # hello.c:3:3
         bl      %plt(foo)
         .loc    0 4 21                          # hello.c:4:21
         move    $a0, $fp
         .loc    0 4 3 is_stmt 0                 # hello.c:4:3
         addi.w  $a0, $a0, 0
         ld.d    $fp, $sp, 16                    # 8-byte Folded Reload
<use gdb and set break ponint there>
         ld.d    $ra, $sp, 24                    # 8-byte Folded Reload
         .loc    0 4 3 epilogue_begin            # hello.c:4:3
         addi.d  $sp, $sp, 32
         ret
[...]

So how unwinder do if we <use gdb and set break ponint there>? I think
if we not give ".cfi_restore 22" or others info, it will consider
   1) the $ra is in cfa-8
   2) the cfa is $fp
So it will get $ra by $ra = *(long*)($fp-8). So it may unwind failed
because $fp has been restored and not the CFA now.

> For objtool the main difference seems a thing explained in
> https://maskray.me/blog/2020-11-08-stack-unwinding by Fangrui:
>
>     Note: on RISC-V and LoongArch, the stack slot for the previous frame
>     pointer is stored at fp[-2] instead of fp[0]. See [Consider
>     standardising which stack slot fp points
>     to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
>     for the RISC-V discussion.

In most cases the $fp is saved at cfa-16. But for va args, something
becomes different at LoongArch (I do not know the case of riscv), the
$fp isn't saved at cfa-16. (e.g. printk?)

> So perhaps we just need to code a constant named "PREV_BP_OFFSET"
Can you give some detail?
>   or
> something in arch/ and use it in update_cfi_state() instead of fully re-
> implement the entire function?

I feel that the update_cfi_state should be arch specific. I believe
that some logic can be reused, but each arch may have its own logic.


Thanks,
Jinyang

Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Fri, 2024-06-07 at 15:14 +0800, Jinyang He wrote:
> >      Note: on RISC-V and LoongArch, the stack slot for the previous frame
> >      pointer is stored at fp[-2] instead of fp[0]. See [Consider
> >      standardising which stack slot fp points
> >      to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
> >      for the RISC-V discussion.
> 
> In most cases the $fp is saved at cfa-16. But for va args, something
> becomes different at LoongArch (I do not know the case of riscv), the
> $fp isn't saved at cfa-16. (e.g. printk?)

Oops indeed.  Even with a very simple case:

int sum(int a, int b) {
	return a + b;
}

with -fno-omit-frame-pointer we get:

sum:
	addi.d	$r3,$r3,-16
	st.d	$r22,$r3,8
	addi.d	$r22,$r3,16
	ld.d	$r22,$r3,8
	add.w	$r4,$r4,$r5
	addi.d	$r3,$r3,16
	jr	$r1

So for leaf functions (where we don't save $ra) $fp is saved at cfa-8.

> I feel that the update_cfi_state should be arch specific. I believe
> that some logic can be reused, but each arch may have its own logic.

I agree it now.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
Hi, Ruoyao and Jinyang,

On Fri, Jun 7, 2024 at 4:29 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Fri, 2024-06-07 at 15:14 +0800, Jinyang He wrote:
> > >      Note: on RISC-V and LoongArch, the stack slot for the previous frame
> > >      pointer is stored at fp[-2] instead of fp[0]. See [Consider
> > >      standardising which stack slot fp points
> > >      to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
> > >      for the RISC-V discussion.
> >
> > In most cases the $fp is saved at cfa-16. But for va args, something
> > becomes different at LoongArch (I do not know the case of riscv), the
> > $fp isn't saved at cfa-16. (e.g. printk?)
>
> Oops indeed.  Even with a very simple case:
>
> int sum(int a, int b) {
>         return a + b;
> }
>
> with -fno-omit-frame-pointer we get:
>
> sum:
>         addi.d  $r3,$r3,-16
>         st.d    $r22,$r3,8
>         addi.d  $r22,$r3,16
>         ld.d    $r22,$r3,8
>         add.w   $r4,$r4,$r5
>         addi.d  $r3,$r3,16
>         jr      $r1
>
> So for leaf functions (where we don't save $ra) $fp is saved at cfa-8.
>
> > I feel that the update_cfi_state should be arch specific. I believe
> > that some logic can be reused, but each arch may have its own logic.
>
> I agree it now.
What is the conclusion about the clang part now? And for the original
-mno-thin-add-sub problem, do you have some way to fix it in the root?
I think we needn't rush, there are some weeks before 6.10 released.

Huacai

>
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
>
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Sat, 2024-06-15 at 16:45 +0800, Huacai Chen wrote:
> Hi, Ruoyao and Jinyang,
> 
> On Fri, Jun 7, 2024 at 4:29 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > 
> > On Fri, 2024-06-07 at 15:14 +0800, Jinyang He wrote:
> > > >      Note: on RISC-V and LoongArch, the stack slot for the previous frame
> > > >      pointer is stored at fp[-2] instead of fp[0]. See [Consider
> > > >      standardising which stack slot fp points
> > > >      to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
> > > >      for the RISC-V discussion.
> > > 
> > > In most cases the $fp is saved at cfa-16. But for va args, something
> > > becomes different at LoongArch (I do not know the case of riscv), the
> > > $fp isn't saved at cfa-16. (e.g. printk?)
> > 
> > Oops indeed.  Even with a very simple case:
> > 
> > int sum(int a, int b) {
> >         return a + b;
> > }
> > 
> > with -fno-omit-frame-pointer we get:
> > 
> > sum:
> >         addi.d  $r3,$r3,-16
> >         st.d    $r22,$r3,8
> >         addi.d  $r22,$r3,16
> >         ld.d    $r22,$r3,8
> >         add.w   $r4,$r4,$r5
> >         addi.d  $r3,$r3,16
> >         jr      $r1
> > 
> > So for leaf functions (where we don't save $ra) $fp is saved at cfa-8.
> > 
> > > I feel that the update_cfi_state should be arch specific. I believe
> > > that some logic can be reused, but each arch may have its own logic.
> > 
> > I agree it now.
> What is the conclusion about the clang part now? And for the original
> -mno-thin-add-sub problem, do you have some way to fix it in the root?
> I think we needn't rush, there are some weeks before 6.10 released.

To me for now we should just make OBJTOOL and ORC depend on BROKEN and
backport to stable...

Even if we can fix both the -mno-thin-add-sub problem and the frame
pointer problem in these weeks, they'll be some nontrivial large change
and improper to backport.  Thus we have to admit objtool doesn't really
work for old releases and mark it broken.


-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
On Sat, Jun 15, 2024 at 4:54 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Sat, 2024-06-15 at 16:45 +0800, Huacai Chen wrote:
> > Hi, Ruoyao and Jinyang,
> >
> > On Fri, Jun 7, 2024 at 4:29 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > >
> > > On Fri, 2024-06-07 at 15:14 +0800, Jinyang He wrote:
> > > > >      Note: on RISC-V and LoongArch, the stack slot for the previous frame
> > > > >      pointer is stored at fp[-2] instead of fp[0]. See [Consider
> > > > >      standardising which stack slot fp points
> > > > >      to](https://github.com/riscv-non-isa/riscv-elf-psabi-doc/issues/18)
> > > > >      for the RISC-V discussion.
> > > >
> > > > In most cases the $fp is saved at cfa-16. But for va args, something
> > > > becomes different at LoongArch (I do not know the case of riscv), the
> > > > $fp isn't saved at cfa-16. (e.g. printk?)
> > >
> > > Oops indeed.  Even with a very simple case:
> > >
> > > int sum(int a, int b) {
> > >         return a + b;
> > > }
> > >
> > > with -fno-omit-frame-pointer we get:
> > >
> > > sum:
> > >         addi.d  $r3,$r3,-16
> > >         st.d    $r22,$r3,8
> > >         addi.d  $r22,$r3,16
> > >         ld.d    $r22,$r3,8
> > >         add.w   $r4,$r4,$r5
> > >         addi.d  $r3,$r3,16
> > >         jr      $r1
> > >
> > > So for leaf functions (where we don't save $ra) $fp is saved at cfa-8.
> > >
> > > > I feel that the update_cfi_state should be arch specific. I believe
> > > > that some logic can be reused, but each arch may have its own logic.
> > >
> > > I agree it now.
> > What is the conclusion about the clang part now? And for the original
> > -mno-thin-add-sub problem, do you have some way to fix it in the root?
> > I think we needn't rush, there are some weeks before 6.10 released.
>
> To me for now we should just make OBJTOOL and ORC depend on BROKEN and
> backport to stable...
But this patch allows clang to build objtool, which seems broken, too.

>
> Even if we can fix both the -mno-thin-add-sub problem and the frame
> pointer problem in these weeks, they'll be some nontrivial large change
> and improper to backport.  Thus we have to admit objtool doesn't really
> work for old releases and mark it broken.
I don't like to disable objtool, unless there is no better solution.
And it seems there has already been some "large fix" in objtool's
history.

Huacai

>
>
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Sat, 2024-06-15 at 17:33 +0800, Huacai Chen wrote:
> > To me for now we should just make OBJTOOL and ORC depend on BROKEN and
> > backport to stable...
> But this patch allows clang to build objtool, which seems broken, too.

Yes, so I mean make objtool depend on CONFIG_BROKEN because it is indeed
broken as at now.

Or we'll end up at least:

select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && !CC_IS_CLANG && !RUST

this is already nasty and I still don't know if it covers all broken
cases (I've no idea if GCC will generate frame pointer in some cases as
well...)

> > Even if we can fix both the -mno-thin-add-sub problem and the frame
> > pointer problem in these weeks, they'll be some nontrivial large change
> > and improper to backport.  Thus we have to admit objtool doesn't really
> > work for old releases and mark it broken.
> I don't like to disable objtool, unless there is no better solution.
> And it seems there has already been some "large fix" in objtool's
> history.

Then we can still backport the large fix to the stable branches when we
finish it up.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
On Sat, Jun 15, 2024 at 6:22 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Sat, 2024-06-15 at 17:33 +0800, Huacai Chen wrote:
> > > To me for now we should just make OBJTOOL and ORC depend on BROKEN and
> > > backport to stable...
> > But this patch allows clang to build objtool, which seems broken, too.
>
> Yes, so I mean make objtool depend on CONFIG_BROKEN because it is indeed
> broken as at now.
I don't like CONFIG_BROKEN here, that means telling everyone not to
enable OBJTOOL, but that is not the case.

>
> Or we'll end up at least:
>
> select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && !CC_IS_CLANG && !RUST
Maybe we needn't consider RUST here? And can we think
AS_HAS_THIN_ADD_SUB always imply AS_HAS_EXPLICIT_RELOCS here?

If so, we can simplify the condition. And please submit an updated version.

Huacai

>
> this is already nasty and I still don't know if it covers all broken
> cases (I've no idea if GCC will generate frame pointer in some cases as
> well...)
>
> > > Even if we can fix both the -mno-thin-add-sub problem and the frame
> > > pointer problem in these weeks, they'll be some nontrivial large change
> > > and improper to backport.  Thus we have to admit objtool doesn't really
> > > work for old releases and mark it broken.
> > I don't like to disable objtool, unless there is no better solution.
> > And it seems there has already been some "large fix" in objtool's
> > history.
>
> Then we can still backport the large fix to the stable branches when we
> finish it up.
>
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Mon, 2024-06-17 at 21:11 +0800, Huacai Chen wrote:



> > select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && !CC_IS_CLANG && !RUST
> Maybe we needn't consider RUST here?

Rustc does use $fp that objtool cannot handle as at now.  It can be
demonstrated with an over-aligned type, similar to Clang:

$ cat t.rs
#[repr(C, align(64))]
struct X(i32);

extern { fn f(x: &X) -> i64; }

#[no_mangle]
fn g() -> i64 {
    let x = X(114514);
    unsafe {f(&x)}
}
$ rustc t.rs --emit=asm --crate-type=staticlib -O
$ grep fp t.s
	st.d	$fp, $sp, 112
	addi.d	$fp, $sp, 128
	addi.d	$sp, $fp, -128
	ld.d	$fp, $sp, 112

The kernel uses rust-bindgen to generate some .rs file from C headers. 
And __attribute__((aligned(x))) is directly translated to
repr(align(x)).  As __attribute__((aligned(x))) is very common in the
kernel I expect objtool will fail to handle some object code from rustc.

> And can we think AS_HAS_THIN_ADD_SUB always imply
> AS_HAS_EXPLICIT_RELOCS here?

Maybe, AFAIK there's no assembler using thin add-sub but not explicit
relocs.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
On Mon, Jun 17, 2024 at 9:38 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Mon, 2024-06-17 at 21:11 +0800, Huacai Chen wrote:
>
>
>
> > > select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB && !CC_IS_CLANG && !RUST
> > Maybe we needn't consider RUST here?
>
> Rustc does use $fp that objtool cannot handle as at now.  It can be
> demonstrated with an over-aligned type, similar to Clang:
>
> $ cat t.rs
> #[repr(C, align(64))]
> struct X(i32);
>
> extern { fn f(x: &X) -> i64; }
>
> #[no_mangle]
> fn g() -> i64 {
>     let x = X(114514);
>     unsafe {f(&x)}
> }
> $ rustc t.rs --emit=asm --crate-type=staticlib -O
> $ grep fp t.s
>         st.d    $fp, $sp, 112
>         addi.d  $fp, $sp, 128
>         addi.d  $sp, $fp, -128
>         ld.d    $fp, $sp, 112
>
> The kernel uses rust-bindgen to generate some .rs file from C headers.
> And __attribute__((aligned(x))) is directly translated to
> repr(align(x)).  As __attribute__((aligned(x))) is very common in the
> kernel I expect objtool will fail to handle some object code from rustc.
My meaning is: the build robot doesn't enable RUST now (maybe I'm
wrong), and this problem will surely be fixed in future, so we can
make the condition as simple as possible.

Huacai

>
> > And can we think AS_HAS_THIN_ADD_SUB always imply
> > AS_HAS_EXPLICIT_RELOCS here?
>
> Maybe, AFAIK there's no assembler using thin add-sub but not explicit
> relocs.
>
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
>
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Heng Qi 1 year, 8 months ago
On Tue,  4 Jun 2024 23:07:41 +0800, Xi Ruoyao <xry111@xry111.site> wrote:
> GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> (static key implementation) and etc. so it will produce some warnings.
> This is causing the kernel CI systems to complain everywhere.
> 
> For GAS we can check if -mthin-add-sub option is available to know if
> R_LARCH_{32,64}_PCREL are supported.
> 
> For Clang, we require Clang >= 18 and Clang >= 17 already supports
> R_LARCH_{32,64}_PCREL, so we can always assume Clang is fine for
> objtool.
> 
> Note that __jump_table is not generated by the compiler so
> -fno-jump-table is completely irrelevant for this issue.
> 

Hi Xi Ruoyao,

I want to know does this patch fix the following warning:
https://lore.kernel.org/all/202406040645.6z95FW1f-lkp@intel.com/ ?

Thanks.

> Fixes: cb8a2ef0848c ("LoongArch: Add ORC stack unwinder support")
> Closes: https://lore.kernel.org/loongarch/Zl5m1ZlVmGKitAof@yujie-X299/
> Closes: https://lore.kernel.org/loongarch/ZlY1gDDPi_mNrwJ1@slm.duckdns.org/
> Closes: https://lore.kernel.org/loongarch/1717478006.038663-1-hengqi@linux.alibaba.com/
> Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=816029e06768
> Link: https://github.com/llvm/llvm-project/commit/42cb3c6346fc
> Signed-off-by: Xi Ruoyao <xry111@xry111.site>
> ---
>  arch/loongarch/Kconfig       | 5 ++++-
>  arch/loongarch/Kconfig.debug | 1 +
>  2 files changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
> index e38139c576ee..e461a6c59f15 100644
> --- a/arch/loongarch/Kconfig
> +++ b/arch/loongarch/Kconfig
> @@ -143,7 +143,7 @@ config LOONGARCH
>  	select HAVE_LIVEPATCH
>  	select HAVE_MOD_ARCH_SPECIFIC
>  	select HAVE_NMI
> -	select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS
> +	select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB
>  	select HAVE_PCI
>  	select HAVE_PERF_EVENTS
>  	select HAVE_PERF_REGS
> @@ -273,6 +273,9 @@ config AS_HAS_LBT_EXTENSION
>  config AS_HAS_LVZ_EXTENSION
>  	def_bool $(as-instr,hvcl 0)
>  
> +config AS_HAS_THIN_ADD_SUB
> +	def_bool $(cc-option,-Wa$(comma)-mthin-add-sub) || CC_IS_CLANG
> +
>  menu "Kernel type and options"
>  
>  source "kernel/Kconfig.hz"
> diff --git a/arch/loongarch/Kconfig.debug b/arch/loongarch/Kconfig.debug
> index 98d60630c3d4..8b2ce5b5d43e 100644
> --- a/arch/loongarch/Kconfig.debug
> +++ b/arch/loongarch/Kconfig.debug
> @@ -28,6 +28,7 @@ config UNWINDER_PROLOGUE
>  
>  config UNWINDER_ORC
>  	bool "ORC unwinder"
> +	depends on HAVE_OBJTOOL
>  	select OBJTOOL
>  	help
>  	  This option enables the ORC (Oops Rewind Capability) unwinder for
> -- 
> 2.45.2
>
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
Hi, Ruoyao,

On Tue, Jun 4, 2024 at 11:08 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> (static key implementation) and etc. so it will produce some warnings.
> This is causing the kernel CI systems to complain everywhere.
>
> For GAS we can check if -mthin-add-sub option is available to know if
> R_LARCH_{32,64}_PCREL are supported.
I think we should give a chance to toolchains without the
-mthin-add-sub option, so I hope Tiezhu can resubmit this patch to
solve this problem.
https://lore.kernel.org/loongarch/1690272910-11869-6-git-send-email-yangtiezhu@loongson.cn/

Huacai

>
> For Clang, we require Clang >= 18 and Clang >= 17 already supports
> R_LARCH_{32,64}_PCREL, so we can always assume Clang is fine for
> objtool.
>
> Note that __jump_table is not generated by the compiler so
> -fno-jump-table is completely irrelevant for this issue.
>
> Fixes: cb8a2ef0848c ("LoongArch: Add ORC stack unwinder support")
> Closes: https://lore.kernel.org/loongarch/Zl5m1ZlVmGKitAof@yujie-X299/
> Closes: https://lore.kernel.org/loongarch/ZlY1gDDPi_mNrwJ1@slm.duckdns.org/
> Closes: https://lore.kernel.org/loongarch/1717478006.038663-1-hengqi@linux.alibaba.com/
> Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=816029e06768
> Link: https://github.com/llvm/llvm-project/commit/42cb3c6346fc
> Signed-off-by: Xi Ruoyao <xry111@xry111.site>
> ---
>  arch/loongarch/Kconfig       | 5 ++++-
>  arch/loongarch/Kconfig.debug | 1 +
>  2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig
> index e38139c576ee..e461a6c59f15 100644
> --- a/arch/loongarch/Kconfig
> +++ b/arch/loongarch/Kconfig
> @@ -143,7 +143,7 @@ config LOONGARCH
>         select HAVE_LIVEPATCH
>         select HAVE_MOD_ARCH_SPECIFIC
>         select HAVE_NMI
> -       select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS
> +       select HAVE_OBJTOOL if AS_HAS_EXPLICIT_RELOCS && AS_HAS_THIN_ADD_SUB
>         select HAVE_PCI
>         select HAVE_PERF_EVENTS
>         select HAVE_PERF_REGS
> @@ -273,6 +273,9 @@ config AS_HAS_LBT_EXTENSION
>  config AS_HAS_LVZ_EXTENSION
>         def_bool $(as-instr,hvcl 0)
>
> +config AS_HAS_THIN_ADD_SUB
> +       def_bool $(cc-option,-Wa$(comma)-mthin-add-sub) || CC_IS_CLANG
> +
>  menu "Kernel type and options"
>
>  source "kernel/Kconfig.hz"
> diff --git a/arch/loongarch/Kconfig.debug b/arch/loongarch/Kconfig.debug
> index 98d60630c3d4..8b2ce5b5d43e 100644
> --- a/arch/loongarch/Kconfig.debug
> +++ b/arch/loongarch/Kconfig.debug
> @@ -28,6 +28,7 @@ config UNWINDER_PROLOGUE
>
>  config UNWINDER_ORC
>         bool "ORC unwinder"
> +       depends on HAVE_OBJTOOL
>         select OBJTOOL
>         help
>           This option enables the ORC (Oops Rewind Capability) unwinder for
> --
> 2.45.2
>
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Wed, 2024-06-05 at 09:52 +0800, Huacai Chen wrote:
> Hi, Ruoyao,
> 
> On Tue, Jun 4, 2024 at 11:08 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > 
> > GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> > "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> > objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> > (static key implementation) and etc. so it will produce some warnings.
> > This is causing the kernel CI systems to complain everywhere.
> > 
> > For GAS we can check if -mthin-add-sub option is available to know if
> > R_LARCH_{32,64}_PCREL are supported.
> I think we should give a chance to toolchains without the
> -mthin-add-sub option, so I hope Tiezhu can resubmit this patch to
> solve this problem.
> https://lore.kernel.org/loongarch/1690272910-11869-6-git-send-email-yangtiezhu@loongson.cn/

It only handles .discard.{un,}reachable but not __jump_table. 
__jump_table is our main issue here.  And I don't see a quick way to
make -mno-thin-add-sub work for __jump_table because we really need to
resolve the relocation for __jump_table instead of simply skipping it.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Huacai Chen 1 year, 8 months ago
On Wed, Jun 5, 2024 at 12:38 PM Xi Ruoyao <xry111@xry111.site> wrote:
>
> On Wed, 2024-06-05 at 09:52 +0800, Huacai Chen wrote:
> > Hi, Ruoyao,
> >
> > On Tue, Jun 4, 2024 at 11:08 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > >
> > > GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> > > "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> > > objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> > > (static key implementation) and etc. so it will produce some warnings.
> > > This is causing the kernel CI systems to complain everywhere.
> > >
> > > For GAS we can check if -mthin-add-sub option is available to know if
> > > R_LARCH_{32,64}_PCREL are supported.
> > I think we should give a chance to toolchains without the
> > -mthin-add-sub option, so I hope Tiezhu can resubmit this patch to
> > solve this problem.
> > https://lore.kernel.org/loongarch/1690272910-11869-6-git-send-email-yangtiezhu@loongson.cn/
>
> It only handles .discard.{un,}reachable but not __jump_table.
> __jump_table is our main issue here.  And I don't see a quick way to
> make -mno-thin-add-sub work for __jump_table because we really need to
> resolve the relocation for __jump_table instead of simply skipping it.
 __jump_table is disabled now, so we can only solve  -mno-thin-add-sub
at present, and the next step is __jump_table.

Huacai
>
> --
> Xi Ruoyao <xry111@xry111.site>
> School of Aerospace Science and Technology, Xidian University
>
Re: [PATCH] loongarch: Only select HAVE_OBJTOOL and allow ORC unwinder if the inline assembler supports R_LARCH_{32,64}_PCREL
Posted by Xi Ruoyao 1 year, 8 months ago
On Wed, 2024-06-05 at 13:21 +0800, Huacai Chen wrote:
> On Wed, Jun 5, 2024 at 12:38 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > 
> > On Wed, 2024-06-05 at 09:52 +0800, Huacai Chen wrote:
> > > Hi, Ruoyao,
> > > 
> > > On Tue, Jun 4, 2024 at 11:08 PM Xi Ruoyao <xry111@xry111.site> wrote:
> > > > 
> > > > GAS <= 2.41 does not support generating R_LARCH_{32,64}_PCREL for
> > > > "label - ." and it generates R_LARCH_{ADD,SUB}{32,64} pairs instead.
> > > > objtool cannot handle R_LARCH_{ADD,SUB}{32,64} pair in __jump_table
> > > > (static key implementation) and etc. so it will produce some warnings.
> > > > This is causing the kernel CI systems to complain everywhere.
> > > > 
> > > > For GAS we can check if -mthin-add-sub option is available to know if
> > > > R_LARCH_{32,64}_PCREL are supported.
> > > I think we should give a chance to toolchains without the
> > > -mthin-add-sub option, so I hope Tiezhu can resubmit this patch to
> > > solve this problem.
> > > https://lore.kernel.org/loongarch/1690272910-11869-6-git-send-email-yangtiezhu@loongson.cn/
> > 
> > It only handles .discard.{un,}reachable but not __jump_table.
> > __jump_table is our main issue here.  And I don't see a quick way to
> > make -mno-thin-add-sub work for __jump_table because we really need to
> > resolve the relocation for __jump_table instead of simply skipping it.
>  __jump_table is disabled now, so we can only solve  -mno-thin-add-sub
> at present, and the next step is __jump_table.

No, -fno-jump-table does not disable __jump_table.  __jump_table is from
static key implementation in arch/loongarch/include/asm/jump_label.h,
not generated by the compiler.

And the problem of __jump_table is exact with -mno-thin-add-sub.  It
reads:

#define JUMP_TABLE_ENTRY                \
     ".pushsection  __jump_table, \"aw\"    \n\t"   \
     ".align    3           \n\t"   \
     ".long     1b - ., %l[l_yes] - .   \n\t"   \
     ".quad     %0 - .          \n\t"   \
     ".popsection               \n\t"

The "1b - ." and "%0 - ." things produce different relocs with -mno-
thin-add-sub and -mthin-add-sub.  The objtool can only handle the relocs
from -mthin-add-sub here.

-- 
Xi Ruoyao <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University