1 - DiVA portal

ࡱ> 















































[ .bjbj ΐΐ -"-"-"Dq"q"q"",)$q"FA0~Ld#M#M#MoW|Ӝ#ceeeeee$Зrꉋ-"V|oW #M#M &(z@z@z@ #M-"#Mcz@cz@z@j y!^{#M^5q"!|bON/tmp/bootup_printks. With the use of a utility program, show_delta can read the information from Printk output and display time duration between the Printk messages.  REF _Ref230525770 \n \h \* MERGEFORMAT  [8]  REF _Ref230421436 \r \h \* MERGEFORMAT  [51]

The main advantages of Printk techniques are its simplicity and robustness. It doesn t require any external program or code or any sub routine to obtain boot time measurement. On the other hand there were few drawbacks encountered during the Printk usage. The Printk message option dmesg doesnt display all kernel messages due to fixed size of the kernel buffer. Each time the printk message added some bytes, which eventually exhaust the buffer. The second disadvantage is that the timing resolution is not efficient. Sched_clock() varies from architecture to architecture. In case of ARM architecture timestamps are zero until clock is initialized but in case of x86 timestamps are available immediately. Some platforms have a resolution of 1 jiffy (of 10 seconds duration) which means result of time increment at this resolution only, so it gives imprecise results for Printk-times. The third disadvantage occurred when the Printk options is turned ON. It hangs the machine due to calling of sched_clock too early in the boot sequence. Some platforms dont support early initialization of sched_clock () before any other events such as interrupts or memory initialization. In case of x86 no such problems occurred but with other platform customization of sched_clock is needed  REF _Ref230525770 \n \h \* MERGEFORMAT  [8]  REF _Ref230538680 \n \h \* MERGEFORMAT  [51]  REF _Ref229837555 \n \h \* MERGEFORMAT  [78].

User space time measurement User space time measurement depicts the total time spent from starting of init process to the state where system is operational. The different techniques such as Application XIP and optimization of RC scripts can be adopted to reduce boot time of user space, so to examine the effects of boot reduction techniques, user space time measurement tools can effectively measures the boot time  REF _Ref229560087 \r \h \* MERGEFORMAT  [59]. The user space measurement tools discussed here are Boot chart and Strace.  REF _Ref229560114 \r \h \* MERGEFORMAT  [60]

Boot Chart

Boot chart is a tool used for analyzing boot process during user space initialization. It is the tool used for performance analysis and displaying the GNU Linux boot process. Boot chart able collects the data about resource utilization and process information during boot process. Later, it is graphically rendered in PNG, SVG encoded chart  REF _Ref229558529 \r \h \* MERGEFORMAT  [57]  REF _Ref229558611 \r \h \* MERGEFORMAT  [58]. The graphical display of the boot chart is shown in appendix  REF _Ref230729723 \n \h  9.8.

Boot chart uses shell scripts into init phase of the kernel. , Tthis scripts runs in the background and collect process information, CPU start, disk usage and data from /proc file system. Performance data collected during the boot chart process is stored in the memory and saved in form of log files in hard disk once boot process complete  REF _Ref230538960 \n \h \* MERGEFORMAT  [58].

Disadvantages of boot chart are that it increases the system boot time by a small fraction as an additional script need needed to run tofor collecting statistics during the boot process. It works well with the system having enough resources in terms of RAM and greater CPU power but in limited resources system such as a small embedded device, it does not work well. Boot chart has poor performance in terms of scalability. File input/output overhead is high due to large system calls, data collection is the most time consuming step. Lots of processes are required to be executed while logging data to output files  REF _Ref229560087 \r \h \* MERGEFORMAT  [59].

Strace

Straceis a diagnostic, instructional, and debugging tool. It is used to collect the timing information at process level. It determines time spent during application startup. It can calculate system call count and time spent in each system calls. It can trace which operations are causing serious concerns such as multiple opening of a file etc  REF _Ref230539059 \n \h \* MERGEFORMAT  [50]  REF _Ref229599706 \r \h \* MERGEFORMAT  [61]  REF _Ref230540396 \n \h \* MERGEFORMAT  [64]. The sample result obtained from Strace is shown below in appendix  REF _Ref230729739 \n \h  9.9. The main advantage of Strace is that it can run in parallel with processes, it can trace all results of the system calls made to kernel and even report the detailed information in case of memory failure and error while opening a file. .Strace helps to identify the area and troubleshoot those parts of the program which cause problems  REF _Ref229600339 \r \h \* MERGEFORMAT  [62]. It is useful for that part of system where source code is not available or recompilation is not possible.  REF _Ref229600510 \r \h \* MERGEFORMAT  [63]

Major pitfalls of Strace measurement is that it does not work for precise measurements. Also, tracing of whole system is not possible  REF _Ref230539059 \n \h \* MERGEFORMAT  [50].

A sSummary of all measurement tools and programs discussed above are depicted in table 12 below.

Table 12 summary of measurement techniques

ToolsArea of MeasurementAdvantageDisadvantageGrab Serial System Wide MeasurementNo Slow down effect on target. Consumes host CPU cyclesInstallation Problem due to Python Kernel message Piled up in initUp TimeSystem Wide MeasurementProvides timestamp of entire systemMeasurement starts only once system clocks startsKFTKernel MeasurementFind Boot latencies in early startupSuffers from Performance overhead Trace Buffer exhaustionPrintkKernel MeasurementRobust tool and no overhead. Measurement requires precise System Clock.

Not all Printk messages are displayed Boot ChartUser Space MeasurementStarts a daemon early in INITOverhead of system callsStraceUser Space MeasurementCount the system call Measure time stamp of applicationSystem Init Problem Experiments In this section, we will explain and discuss experimentation performed by us. We conducted these experiments on a personal computer with typical boot time of 100-150 Seconds. The hardware configuration of the experiment machine will be discussed in experiment setup section. We mainly focused on techniques which provided us a reasonable ratio of effort required in implementing those techniques and the percentage reduction in boot time. For example, implementing calibration delay avoidance, it requires information about hardware devices delays and it can cause unstable devices as discussed in previous sections. TAnd the boot time we save by this technique is around 225 milliseconds which are is negligible with respect to the boot time of 100 seconds. Another major criterion for choosing the appropriate reduction technique is based on the most time consuming parts of boot process. Decompression of kernel and Iinitrd and execution of RC scripts are the steps which consumes most of the boot time  REF _Ref229837555 \r \h \* MERGEFORMAT  [78]. POST is another step which consumes a considerable amount of the boot time but we can do very little about this as this step is very critical for hardware reliability of the system.

Keeping above facts in mind, we decided to proceed with fast kernel decompression reduction technique.

Experiment setup and goals The Eexperiment was conducted on an x86 desktop computer with Pentium 4 processor 3.0 GHz and 3 GB of RAM. The oOperating system on the machine was Fedora 9 with kernel version 2.6.25.14.

The mMajor goal of this experiment was to find out the performance of various compression techniques and how they affect total boot time of the system. Applicability of these compression techniques for different Linux systems running on different hardware configurations was also analyzed based on the constraints these techniques possess.

Gzip, bzip2 and Lzop are the techniques used during the experiments. Kernel images of different sizes were building with all mentioned compression techniques. Later, these images were used to boot the system and their respective decompression times were noted with the help of Printk measurement technique. The purpose of using different sizes of kernel for decompression is to determine the applicability of compression technique with respect to hardware constraints various systems may have.

Results The eExperiment results are shown in Appendix  REF _Ref230730692 \n \h  9.10  REF _Ref230730707 \n \h  9.11  REF _Ref230730716 \n \h  9.12  REF _Ref230730726 \n \h  9.13 in tabular form. In this section, results are shown with the help of the a graph below. This graph will serve as the basis for the discussion in the next section.

 Figure  SEQ Figure \* ARABIC 5 Experiment Result of Fast Kernel Decompression Technqiues

Above graph depicts time taken tofor decompressing various size kernel images. Numbers at the bottom of arrows shows image size after compression and before compression [x(y MB), x>decompressed image size, y> uncompressed image size]. Dots in the graph show time taken in decompression of images of corresponding sizes.

Discussion In this section, we will discuss the performance of each compression technique with respect to the decompression performed over kernel images of the different sizes. This will be followed by the comparison of all three techniques and their applicability for different system configurations. In case of gzip as shown from the above graph, Compression ration increases linearly with the rate of 6-8% for initial 3 sizes up to 54 MB. IBut it gets a quick increment of 12% for the fourth image size of 86.1 MB. Overall, gzip gives a good compression/speed ratio slightly towards speed and hence is a good choice for small embedded systems requiring lesser boot time.

Bzip2 does not show very fast decompression speed in comparison to others but provides a very good compression ratio. It also And gives a clear indication that for large size kernel images it can further improve the compression ratio which makes it the obviousa clear choice for personal computers having bigger flash memory. Lzop gives the best decompression speed at the cost of compression ratio but the improvement in boot time by using lzop because of its high decompression speed makes it a clear choice for the systems where minimum downtime is desirable.

Traditionally gzip is being used for kernel decompression in almost all Linux systems. From the above experiments, it is evident that based on systems configuration other alternatives can be looked upon in order to improve the boot time. For real time critical systems where no or minimal downtime is a mandatory requirement, lzop can provide better decompression speed over gzip. Also, if we consider the overall boot process, these are many 9;





K < F d! $$$$ $d*$a$$da$W

X

Y

u

v

w

x

















































߼߱y_߱N js?hUmHnHu2j>hGh>*B*UmHnHphuhPJmHnHtHuh{zEmHnHu jy>hUmHnHujhUmHnHuhmHnHu2j=hGh>*B*UmHnHphuhmHnHuhGh0JmHnHu$jhGh0JUmHnHu









    ) * + E F G H I J K L M i j k l t u v үҤy_ҤN jgAhUmHnHu2j@hGh>*B*UmHnHphuh{zEmHnHu jm@hUmHnHujhUmHnHuhmHnHu2j?hGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu        5 ӸӅzziӸOӅzz2jBhGh>*B*UmHnHphu jaBhUmHnHuhmHnHuhGh0JmHnHsHu2jAhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHujhUmHnHuh{zEmHnHu5 6 7 9 : ; < = > Z [ \ ] _ ` l m n µ§§yyhµ§N2jDhGh>*B*UmHnHphu jUDhUmHnHuhmHnHu2jChGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu j[ChUmHnHu 

 # $ % ? @ A C D E F G H d e ٹʮʛxgʮʛ jIFhUmHnHu2jEhGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu jOEhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu"e f g j k ŸŭӸy_ŸŭN j=HhUmHnHu2jGhGh>*B*UmHnHphuhmHnHuh{zEmHnHu jCGhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jFhGh>*B*UmHnHphu 

 '()*-.ABC]^_abcdefүҤy_Ҥ2jIhGh>*B*UmHnHphuh{zEmHnHu j7IhUmHnHujhUmHnHuhmHnHu2jHhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu  !"#?@ABµ§§yyhµ§N2jKhGh>*B*UmHnHphu j+KhUmHnHuhmHnHu2jJhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu j1JhUmHnHuBDE`ab|}~ٹʮʛxgʮʛ jMhUmHnHu2jLhGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu j%LhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu":RzDc;F

_yD   345789:;*B*UmHnHphuhmHnHuh{zEmHnHu jNhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jMhGh>*B*UmHnHphu /01KүҤy_Ҥ2jPhGh>*B*UmHnHphuh{zEmHnHu j PhUmHnHujhUmHnHuhmHnHu2jOhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu KLMOPQRSTpqrsuvµ§§yyhµ§N2j~RhGh>*B*UmHnHphu jRhUmHnHuhmHnHu2jQhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu jQhUmHnHu  12349:WXYstuwxyz{|ٹʮʛxgʮʛ jShUmHnHu2jxShGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu jRhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu"!"#=>?ABŸŭӸy_ŸŭN jUhUmHnHu2jlUhGh>*B*UmHnHphuhmHnHuh{zEmHnHu jThUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jrThGh>*B*UmHnHphuBCDEFbcdehiүҤy_Ҥ2j`WhGh>*B*UmHnHphuh{zEmHnHu jVhUmHnHujhUmHnHuhmHnHu2jfVhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu  %&@AB\]^`abcdeµ§§yyhµ§N2jTYhGh>*B*UmHnHphu jXhUmHnHuhmHnHu2jZXhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu jWhUmHnHu45689:;*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu jYhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu"Z[\abqrsŸŭӸy_ŸŭN j\hUmHnHu2jB\hGh>*B*UmHnHphuhmHnHuh{zEmHnHu j[hUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jH[hGh>*B*UmHnHphu 

#$%?@ACDEFGHdefgijүҤy_Ҥ2j6^hGh>*B*UmHnHphuh{zEmHnHu j]hUmHnHujhUmHnHuhmHnHu2j*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu  

  ()*+µ§§yyhµ§N2j*`hGh>*B*UmHnHphu j_hUmHnHuhmHnHu2j0_hGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu j^hUmHnHu+01XYZ\]^_`a}~ 

  -.ٹʮʛxm\ʮʛ jahUmHnHuh mHnHu2j$ahGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu j`hUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu#./034VWXrstvwxyz{ŸŭӸy_ŸŭN jchUmHnHu2jchGh>*B*UmHnHphuhmHnHuh{zEmHnHu jbhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jbhGh>*B*UmHnHphu

 klүҤynTҤ2j ehGh>*B*UmHnHphuh{zEmHnHu jdhUmHnHujhUmHnHuh mHnHuhmHnHu2jdhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu !"#=>?ABCDEFbcdշyhշN2jghGh>*B*UmHnHphu jfhUmHnHu2jfhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu jehUmHnHuhmHnHudejkqr$%&@ABDEFGHIefǼǜ߈nǭ]߈ jwhhUmHnHu2jghGh>*B*UmHnHphuhmHnHuh{zEmHnHu j}ghUmHnHujhUmHnHuh mHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu$GJC\ o /!!!P""d##u$$$$L%0 n!

d x fghklŸŭӸy_ŸŭN jkjhUmHnHu2jihGh>*B*UmHnHphuhmHnHuh{zEmHnHu jqihUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jhhGh>*B*UmHnHphu'()CDEGHIJKLhijkmnxyzүҤy_Ҥ2jkhGh>*B*UmHnHphuh{zEmHnHu jekhUmHnHujhUmHnHuhmHnHu2jjhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu    µ§§yyhµ§N2jmhGh>*B*UmHnHphu jYmhUmHnHuhmHnHu2jlhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu j_lhUmHnHu !"@ABCDEabcdghmnoٹʮʛxgʮʛ jMohUmHnHu2jnhGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu jSnhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu"

 VXZŸŭӸy_ŸŭN jAqhUmHnHu2jphGh>*B*UmHnHphuhmHnHuh{zEmHnHu jGphUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2johGh>*B*UmHnHphuNPRVXZ\^`үҤy_OhGh0JmHnHu2jrhGh>*B*UmHnHphuh{zEmHnHu j;rhUmHnHujhUmHnHuhmHnHu2jqhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu   

) * + , / 0 L M N h i j l m n o p q ׻רxg׻ר j/thUmHnHu2jshGh>*B*UmHnHphuhmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHu j5shUmHnHujhUmHnHuhmHnHuhGh0JmHnHu ! !!(!)!*!,!-!ŸŭӸy_ŸŭN j#vhUmHnHu2juhGh>*B*UmHnHphuhmHnHuh{zEmHnHu j)uhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2jthGh>*B*UmHnHphu-!.!/!0!1!M!N!O!P!S!T!k!l!m!!!!!!!!!!!!!!!!!!!!үҤy_Ҥ2jwhGh>*B*UmHnHphuh{zEmHnHu jwhUmHnHujhUmHnHuhmHnHu2jvhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu !!!!!!!!!""""""-"."/"I"J"K"M"N"O"P"Q"R"n"o"p"q"µ§§yyhµ§N2jyhGh>*B*UmHnHphu jyhUmHnHuhmHnHu2jxhGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHuh{zEmHnHujhUmHnHu jxhUmHnHuq"u"v"""""""""""""""""##A#B#C#]#^#_#a#b#c#d#e#f###ٹʮʛxgʮʛ j{hUmHnHu2jzhGh>*B*UmHnHphuhmHnHu$jhGh0JUmHnHuh{zEmHnHu j zhUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu"################# $ $ $$$$R$S$T$n$o$p$r$s$ŸŭӸy_ŸŭN j|hUmHnHu2j||hGh>*B*UmHnHphuhmHnHuh{zEmHnHu j{hUmHnHujhUmHnHuhmHnHuhPJmHnHtHuhGh0JmHnHu$jhGh0JUmHnHu2j{hGh>*B*UmHnHphus$t$u$v$w$$$$$$$$$$$$$$$$$$$$$$$$$үҤyqmimqeqR$jh~h0JUmHnHuhsGhU}h]jh]Uh{zEmHnHu j}hUmHnHujhUmHnHuhmHnHu2jv}hGh>*B*UmHnHphuhmHnHuhGh0JmHnHuhPJmHnHtHu$jhGh0JUmHnHu$$%%%%)%*%+%E%F%G%I%J%K%L%M%N%j%k%l%m%%%%%%%%%%λ񰡰x^񰡰M jhUmHnHu2jjh~h>*B*UmHnHphuhPJmHnHtHuh{zEmHnHu j~hUmHnHujhUmHnHuhmHnHu$jh~h0JUmHnHu2jp~h~h>*B*UmHnHphuhmHnHuh~h0JmHnHuL%%0&& ''(()o)P*T*t*+,|-'....112206 d`gdfRdgdfRd0 n!

%%%%%%%% &

& &&&)&*&+&-&.&/&0&1&2&N&O&P&Q&&&&ѮњяodJя2j^h~h>*B*UmHnHphuh{zEmHnHu jhUmHnHujhUmHnHuhmHnHu'h~h0JOJQJ^JmHnHu2jdh~h>*B*UmHnHphuhmHnHuh~h0JmHnHu$jh~h0JUmHnHuhPJmHnHtHu&&&&&&&&&&&&&&&&&'''''' '!'"'>'?'@'A'k'շyhշN2jRh~h>*B*UmHnHphu jՂhUmHnHu2jXh~h>*B*UmHnHphuhmHnHuh~h0JmHnHuhPJmHnHtHu$jh~h0JUmHnHuh{zEmHnHujhUmHnHu jہhUmHnHuhmHnHuk'l'm'''''''''''''''''(((((((((5(6(7(淪yh淪N2jFh~h>*B*UmHnHphu jɄhUmHnHu2jLh~h>*B*UmHnHphuhmHnHuh~h0JmHnHuhPJmHnHtHu$jh~h0JUmHnHuh{zEmHnHu jσhUmHnHujhUmHnHuhmHnHu7(8(f(g(j(k(l(((((((((((((((((())))))))$)eT jhUmHnHu2j@h~h>*B*UmHnHphuhmHnHuhPJmHnHtHuh{zEmHnHu jÅhUmHnHujhUmHnHuhmHnHu'h~h0JOJQJ^JmHnHuh~h0JmHnHu$jh~h0JUmHnHu $)%)&)')L)M)N)h)i)j)l)m)n)o)p)q)))))**

* **B*񹪹āx^N񹪹h~h0JmHnHu2j4h~h>*B*UmHnHphuhmHnHuhPJmHnHtHuh{zEmHnHu jhUmHnHujhUmHnHuhmHnHu$jh~h0JUmHnHu2j:h~h>*B*UmHnHphuh~h0JmHnHuB*D*F*J*L*N*P*R*T*r*t*v*********T+V+X++++µw]RRA jhUmHnHuhmHnHu2j.hh>*B*UmHnHphuhmHnHuhh0JmHnHu$jhh0JUmHnHuhsGhU}h]jh]UhPJmHnHtHu$jh~h0JUmHnHuh{zEmHnHujhUmHnHu jhUmHnHu+++++++++++8,:,B,D,F,z,|,~,,,,,,,,,,,,-.-ӸӸzziӸOӸ2j"hh>*B*UmHnHphu jhUmHnHuhmHnHuhh0JmHnHu2j(hh>*B*UmHnHphuhmHnHuhh0JmHnHuhPJmHnHtHu$jhh0JUmHnHujhUmHnHuh{zEmHnHu.-6-8-:-n-p-r-v-x-z-|-~------... .!.".$.%.&.'.(.).E.F.׻רxg׻ר jhUmHnHu2jhh>*B*UmHnHphuhmHnHuhPJmHnHtHu$jhh0JUmHnHuh{zEmHnHu jhUmHnHujhUmHnHuhmHnHuhh0JmHnHuF.G.H...............//]/j//////0źӂzvovkgkgk`kVCk%h8hfRcHdhdhdh4FHh4FhfR hh8h]h8 hn#hhh]jh]UhPJmHnHtHuh{zEmHnHu jhUmHnHujhUmHnHuhmHnHuhh0JmHnHu$jhh0JUmHnHu2jhh>*B*UmHnHphu00(0)0Q0b0f0}0000000001 111"1)1*1011171A1g1h1m1p1q1r1s1111111112222!2+202ʷHh7FhfRh]%h8hfRcHdhdhdh6FHh6FhfR%h]hfRcHdhdhdh5F%h8hfRcHdhdhdh5FHh5FhfRHh4FhfR h%Sh8h8h]0021252222222444T5U5555555556 6 6-6/606~666677Z7k7o7777λػطηػطؚ؇ؚqmhlHh9FhnH @tH @hn]nH @tH @%hn]hfRcHdhdhdh8FHh8FhfR%h@hfRcHdhdhdh8Fh@%hn]hfRcHdhdhdh7FHh7FhfRhn]h~h]h8h]%h]hfRcHdhdhdh7F'0677777818T8e8888889&9F9e99999ǿdgd'Idd7$8$H$^` hd7$8$H$^hd$a$d`77777880818S8T8d8e8~88888888888­seWFWF!h2 Ah2 A0J B*CJaJphh% 0J B*CJaJphh"!0J B*CJaJph:h"!h0J B*CJaJcHdhdhdh9Fphh]0J B*CJaJphhr0J B*CJaJph)h%h]0J B*CJaJmHphsH)h%hr0J B*CJaJmHphsHh%h]mHsHh%hrmHsHh]mHsHh%hrmHsH888888888999%9&9'9E9F9G9d9e9f999999999999೥uuuqjqc_qXTXh- hN7hN7hI? h(Yhr hrhrh]h.8S0J B*CJaJph!h=h=0J B*CJaJph!hdhJ#0J B*CJaJphhJ#0J B*CJaJph!hdh&20J B*CJaJphh- 0J B*CJaJphh% 0J B*CJaJphh]0J B*CJaJph!hoho0J B*CJaJph9999999RQSQ S S SSSSSSS馡 d`gddCEƀ/F.dgd'Idd`999999::: :':(:+:.:2:3:X:e:::::::: ;(;0;V;W;X;Y;Z;a;p;q;;;;;;ⳝԙ♑╊xHh:FhhI+hN7hN7hcHdhdhdh9F+hN7hN7hcHdhdhdh:F hN7h'mh'mh- HhFh hN7hN7+hN7hN7hcHdhdhdhF(;666=7?7^88&9x99:::::;;;;;ABDd%ADEGg(DGHJjy !=@ACcn,HKLNn  +Milmo ),-/Ol.JMNPpB^abd Sorsu*FIJLl*-.0P @l7k    & M i l m o !!/!g!!!!!!!!!!" "X"t"w"x"z"""""""#H#d#g#h#j#~111/2Z2_2 363;333333334"4$4O4U4575=5>5Y5_5N6i6n6o666666666677777788%8P8U8a8|888888888899992JIJKJzJJJJJJuKKK2LILKLBP]PbPPPPIUtUzUXXXG^r^x^ e4e:eiiiNkykkkkkkkkmmmnGnMn&s>sGsssssstuuu9vTvZvw>wDwwww*xUx[xxxxxxxy'z-z{{{}0}6}6QVf

!&ɋŌ"(*UZߒ

;AVϕ+1љؙ֙ (*Ýŝء Ԣܢ&AG&/JacS{ܦ 9>39?jp˵е/4 7a݌ݒKv|ޭtT289djxFqw`{!9ACnt +1\w|>DFqwBH{  6WdzD~,LȵʸLmŹݹ% Do4x X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%X%̕ X%X%X%X%X%X%X%X%X%X%X%̕ X%X%X%X%X%̕                XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"$!!!!!!RDi,b$kf4xZ )! f֛݆A֛A1Na(1,k? @ H @0( 

@h( 

z

H

0H1 "? 

I B1Na(1,k  "?@b #y

J  #" ?x

K

0K1  #y N

LB 3  Dx

M dzӳ~,:ʵ4nMXŹѹ%»p__ӽ:@++m,+\f-+n.+ /+ 0+ 1+ 2+\ 3+ 4+\ 5+\ 6+\ 7+ 8+\ 9+ :+ ;+\ + ?+\ @+\ A+ B+ C+ D+\ E+\ F+ G+ H+ I+ J+ K+ L+ M+\ N+ O+ P+ Q+ R+ S+ T+ U+ V+LpW+LsX+ pY+ dZ+e[+d\+Le]+d^+Ld_+m`+ma+qb+qc+ qd+Lqe+Lof+rg+rh+Lri+ mj+Li  "",3O%O%a%o%o%%%&&&&&''SSpF'M*@Ō)[BD̓딇2י

ĝ

"ݢޢH701>G?D:?qѵյ57O˷=uҾ!Hu~íu@_}K&8ekԟp֝vب?WݓݔݪK}+tkFxBowD2}Erx 

7?%'9k1 ^ e * +  !ҹܹ=>||??@@TTUUiijj||}},,,,,,Y0_0[2]2739333j6l6667799JJrLtLOOQOuU{UWX[XYYZZ\{\s^u^^^``5e7ezk|kkkZlulHnJnrrssuu?wAwwwxx(z.z{{1}3}~9G*VX  ҙ

BD4;kr̵ε028:\bQSTbC~prĂ333333333333333333333333333333333333333333333333333n *Iu:m$DBba8k0 P 

X

x





" B A a  9 r $D=] Wwk"B%E(Hy!An,L Mm -l.NBbSs*J.lk M m g!!!!X"x"""H#h#V-|-X.g./2`2 3VsVRWbW XXXXY7YYYZZ\]_d_e__pdeMfSfhikkllooppq:q;qTq|qqqqr)rPr^rrrsMsssss"t-titvtttttu%uuu+v7vvvvvwNwZwwwwwHxxxxxxyy0ysyyy/z;zfzrzzz{}}}}}}}}~ ~"~2~O~[~u~~߀Y Nj

^ܞRߟZ*uԳ˵ֵ;=z|>@SUhj{}/2`2 3 @;!?!WV!V!^!H"J#t##%;%W^%&Yk&}&t 'g)'_'I()p))2*\*"+6m+v,E,-m- ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 





















































!

"

#

$

%

&

'

(

)

*

+

,

-

.

/

0

1

2

3

4

5

6

7

8

9

:

;

<

=

>

?

@

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

[

\

]

^

_

`

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

{

|

}

~

















































































































































Root Entry Fj^5

Data

1Table WordDocumentSummaryInformation(

DocumentSummaryInformation8

3CompObjy

 F'Microsoft Office Word 97-2003 Document

MSWordDocWord.Document.89q ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download