diff --git a/screenshot32/DistributedTest/config/user_config.xml b/screenshot32/DistributedTest/config/user_config.xml
index defc72ddf38608a2003f1b303d05ee044914815b..d2a9f63abcb59405f3912326fe29e44730540356 100644
--- a/screenshot32/DistributedTest/config/user_config.xml
+++ b/screenshot32/DistributedTest/config/user_config.xml
@@ -63,4 +63,5 @@
DEBUG
+ ON
\ No newline at end of file
diff --git a/screenshot32/DistributedTest/testcases/DistributedTest.py b/screenshot32/DistributedTest/testcases/DistributedTest.py
index 890b0ed24d5877a32a3e6843cc66970272d4142f..41780ce980a864f7f74f091c0fdd3df9cde18226 100644
--- a/screenshot32/DistributedTest/testcases/DistributedTest.py
+++ b/screenshot32/DistributedTest/testcases/DistributedTest.py
@@ -4,6 +4,7 @@ import threading
import re
from devicetest.core.test_case import TestCase
from devicetest.aw.OpenHarmony import CommonOH
+from testcases.orc import Orc
class DistributedTest(TestCase):
@@ -38,17 +39,26 @@ class DistributedTest(TestCase):
# 授权
CommonOH.click(self.Phone1, 500, 706)
CommonOH.click(self.Phone1, 500, 706)
- CommonOH.touchByType(self.Phone1, "image", index=1)
- time.sleep(1)
- CommonOH.touchByText(self.Phone1, "取消")
- CommonOH.touchByType(self.Phone1, "image", index=1)
- time.sleep(1)
- CommonOH.touchByType(self.Phone1, "input", index=1)
+ CommonOH.hdc_std(self.Phone1, "shell snapshot_display -f /data/distributedcalc_step1.png")
+ CommonOH.hdc_std(self.Phone1, "file recv /data/distributedcalc_step1.png testcases\\distributedcalc_step1.png")
+ CommonOH.click(self.Phone1, 610, 110)
+ time.sleep(3)
+ CommonOH.click(self.Phone1, 380, 1150)
+ CommonOH.click(self.Phone1, 610, 110)
+ time.sleep(3)
+ CommonOH.hdc_std(self.Phone1, "shell snapshot_display -f /data/distributedcalc_step2.png")
+ CommonOH.hdc_std(self.Phone1, "file recv /data/distributedcalc_step2.png testcases\\distributedcalc_step2.png")
+ CommonOH.click(self.Phone1, 580, 1090)
time.sleep(1)
+ CommonOH.hdc_std(self.Phone2, "shell snapshot_display -f /data/distributedcalc_step3.png")
+ CommonOH.hdc_std(self.Phone2, "file recv /data/distributedcalc_step3.png testcases\\distributedcalc_step3.png")
#确定
CommonOH.click(self.Phone2, 520, 520)
CommonOH.click(self.Phone2, 520, 520)
- code = CommonOH.getTextByCondition(self.Phone2, "请在设备端输入链接码进行验证", relativePath="AFTER")
+ CommonOH.hdc_std(self.Phone2, "shell snapshot_display -f /data/distributedcalc_step4.png")
+ CommonOH.hdc_std(self.Phone2, "file recv /data/distributedcalc_step4.png testcases\\distributedcalc_step4.png")
+ time.sleep(1)
+ code = Orc("testcases\\distributedcalc_step4.png")
self.code = re.findall("[0-9]{6}", code)[0]
#输pin码
CommonOH.click(self.Phone1, 300, 535, downtime=500)
@@ -63,6 +73,7 @@ class DistributedTest(TestCase):
j = int(i) - 1
CommonOH.click(self.Phone1, 46 + j * 70, 778)
time.sleep(1)
+ CommonOH.click(self.Phone1, 60, 1145)
# 确定
CommonOH.click(self.Phone1, 500, 600)
@@ -74,8 +85,10 @@ class DistributedTest(TestCase):
CommonOH.startAbility(self.Phone1, "ohos.samples.distributedcalc.MainAbility", "ohos.samples.distributedcalc")
time.sleep(2)
# 拉起远端设备
- CommonOH.touchByType(self.Phone1, "image", index=1)
+ CommonOH.click(self.Phone1, 610, 110)
time.sleep(3)
+ CommonOH.hdc_std(self.Phone1, "shell snapshot_display -f /data/distributedcalc_step5.png")
+ CommonOH.hdc_std(self.Phone1, "file recv /data/distributedcalc_step5.png testcases\\distributedcalc_step5.png")
CommonOH.click(self.Phone1, 580, 1090)
CommonOH.click(self.Phone1, 580, 1090)
# 设备二授权
@@ -83,7 +96,12 @@ class DistributedTest(TestCase):
CommonOH.click(self.Phone2, 500, 706)
CommonOH.click(self.Phone2, 500, 706)
# 校验远端计算器是否被拉起
- CommonOH.checkIfTextExist(self.Phone2, "计算器", pattern="EQUALS", expect=True)
+ CommonOH.hdc_std(self.Phone2, "shell snapshot_display -f /data/distributedcalc_step6.png")
+ CommonOH.hdc_std(self.Phone2, "file recv /data/distributedcalc_step6.png testcases\\distributedcalc_step6.png")
+ CommonOH.hdc_std(self.Phone2, 'shell "aa dump -a | grep distributedcalc > /data/report.txt"')
+ CommonOH.hdc_std(self.Phone2, "file recv /data/report.txt testcases\\report.txt")
+ time.sleep(1)
+ CommonOH.hdc_std(self.Phone1, "file send testcases\\report.txt /data/report.txt")
def net_connect1(self):
# 点亮屏幕
@@ -99,7 +117,5 @@ class DistributedTest(TestCase):
def teardown(self):
# 切入后台,结束进程
- CommonOH.click(self.Phone1, 512, 1246)
- CommonOH.click(self.Phone2, 512, 1246)
- CommonOH.click(self.Phone1, 360, 1168)
- CommonOH.click(self.Phone2, 360, 1168)
\ No newline at end of file
+ CommonOH.hdc_std(self.Phone1, "shell killall ohos.samples.distributedcalc")
+ CommonOH.hdc_std(self.Phone2, "shell killall ohos.samples.distributedcalc")
\ No newline at end of file
diff --git a/screenshot32/DistributedTest/testcases/orc.py b/screenshot32/DistributedTest/testcases/orc.py
new file mode 100644
index 0000000000000000000000000000000000000000..54ab14b87e9dba3ec819d9900c37ac33110a5cc1
--- /dev/null
+++ b/screenshot32/DistributedTest/testcases/orc.py
@@ -0,0 +1,10 @@
+import pytesseract
+from PIL import Image
+
+
+def Orc(path):
+ pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe'
+ tessdata_dir_config = '--tessdata-dir "C:\\Program Files (x86)\\Tesseract-OCR\\tessdata"'
+ image = Image.open(path)
+ code = pytesseract.image_to_string(image, config=tessdata_dir_config)
+ return code
diff --git a/screenshot32/resource/app_capture_screen_test_config.json b/screenshot32/resource/app_capture_screen_test_config.json
index 5e3ac0d8f89bcfe629e15ad98ac8a2e62d391bff..7e2831ae1eb2066fc6ac686a62e0c4c2e76c57a4 100644
--- a/screenshot32/resource/app_capture_screen_test_config.json
+++ b/screenshot32/resource/app_capture_screen_test_config.json
@@ -1,7 +1,7 @@
[
{
- "DEVICE_1":[2, 3, 8, 9, 10, 12],
- "DEVICE_2":[1, 4, 5, 6, 7, 11],
+ "DEVICE_1":[1, 2, 3, 8, 10, 12],
+ "DEVICE_2":[4, 5, 6, 7, 9, 11],
"return-x-y":[210, 1240],
"recent-x-y":[515, 1240],
"home-x-y":[360, 1240],
@@ -10,8 +10,7 @@
"take_photos-x-y":[360, 1095],
"convert_to_video-x-y":[430, 980],
"convert_to_photos-x-y":[200, 1095],
- "last_photos-x-y":[100, 200],
- "album_click-x-y":[530, 1150],
+ "last_photos-x-y":[100, 220],
"stop_video-x-y":[320, 1095],
"phone-x-y":[565, 1045],
"shot_cmd":[""],
@@ -25,7 +24,6 @@
"app_name": "crash_check",
"entry": "",
"compress_file_recv":["cd /data/log/faultlog/temp && tar -cf crash_log.tar cppcrash*"],
- "crash_check":["ls /data/log/faultlog/temp/ -al | wc -l", ""],
"all_actions": [
[1, "remount"], [1, "process_crash_check", "foundation"], [1, "process_crash_check", "render_service"], [1, "process_crash_check", "appspawn"], [1, "compress_file_recv"],
[1, "get_file_from_dev", "/data/log/faultlog/temp/crash_log.tar"]
@@ -48,18 +46,6 @@
[2, "connect_wifi"], [1, "check_ping_baidu"]
]
},
- {
- "app_name": "photos",
- "entry": "",
- "start_screenshot": ["aa start -a com.ohos.screenshot.ServiceExtAbility -b com.ohos.screenshot"],
- "start_photos": ["aa start -a com.ohos.photos.MainAbility -b com.ohos.photos"],
- "cp_db": ["cp /data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/rdb/media_library.db /data/photo.db"],
- "kill_photos": ["killall com.ohos.photos"],
- "all_actions": [
- [8, "start_screenshot"], [8, "start_screenshot"], [5, "start_photos"], [2, "album_click-x-y"], [2, "last_photos-x-y"], [2, "last_photos-x-y"], [2, "shot_cmd"], [1, "cmp_cmd-level"],
- [1, "cp_db"], [1, "get_file_from_dev", "/data/photo.db"], [2, "photo_check"], [1, "process_check", "com.ohos.medialibrary.medialibrarydata"], [1, "kill_photos"]
- ]
- },
{
"app_name": "video_test",
"entry": "",
@@ -69,9 +55,25 @@
"compress_log":["cd /data/log/hilog && tar -cf video_log.tar *"],
"kill_video": ["killall ohos.acts.multimedia.video.videoplayer"],
"all_actions": [
- [1,"start_video_log"], [2, "install_hap", "vediotest/ActsVideoPlayerJsTest.hap"], [1, "mk_test_dir"], [1, "remount"],
+ [1,"start_video_log"], [2, "install_hap", "vediotest/ActsVideoPlayerJsTest.hap"], [1, "mk_test_dir"], [1, "remount"],
[1, "send_file_to_dev", "vediotest/H264_AAC.mp4", "/data/app/el2/100/base/ohos.acts.multimedia.video.videoplayer/haps/entry/files/"],
- [15, "start_test"], [1, "stop_hilog"], [1, "compress_log"], [1, "get_file_from_dev", "/data/log/hilog/video_log.tar"], [1, "kill_video"]
+ [5, "start_test"], [1, "stop_hilog"], [1, "compress_log"], [1, "get_file_from_dev", "/data/log/hilog/video_log.tar"], [1, "kill_video"]
+ ]
+ },
+ {
+ "app_name": "camera",
+ "entry": "",
+ "check_result":["cd /data/log/hilog && grep -nr PreviewOutputCallback", "OnFrameStarted"],
+ "compress_log":["cd /data/log/hilog && tar -cf camera_log.tar *"],
+ "open_camera_log":["rm /data/log/hilog/* && hilog -b X;hilog -b D -T CAMERA;hilog -r"],
+ "start_camera":["aa start -a com.ohos.camera.MainAbility -b com.ohos.camera"],
+ "recover_log":["cd data/log/hilog/;hilog -x > camera_log.txt;hilog -b D"],
+ "kill_camera": ["killall com.ohos.camera"],
+ "kill_photos": ["killall com.ohos.photos"],
+ "all_actions": [
+ [1, "open_camera_log"], [5, "start_camera"], [3, "take_photos-x-y"], [2, "convert_to_video-x-y"], [3, "take_photos-x-y"], [2, "stop_video-x-y"], [6, "convert_to_photos-x-y"],
+ [2, 670, 40], [1, "recover_log"], [1, "check_result"], [1, "shot_cmd", "camera_to_photos"], [1, "cmp_cmd-level", 1900000], [1, "compress_log"],
+ [1, "get_file_from_dev", "/data/log/hilog/camera_log.tar"], [1, "kill_camera"], [1, "kill_photos"]
]
},
{
@@ -86,19 +88,15 @@
]
},
{
- "app_name": "camera",
+ "app_name": "photos",
"entry": "",
- "check_result":["cd /data/log/hilog && grep -nr PreviewOutputCallback", "OnFrameStarted"],
- "compress_log":["cd /data/log/hilog && tar -cf camera_log.tar *"],
- "open_camera_log":["rm /data/log/hilog/* && hilog -b X;hilog -b D -T CAMERA;hilog -r"],
- "start_camera":["aa start -a com.ohos.camera.MainAbility -b com.ohos.camera"],
- "recover_log":["cd data/log/hilog/;hilog -x > camera_log.txt;hilog -b D"],
- "cp_db": ["cp /data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/rdb/media_library.db /data/camera_photo.db"],
- "kill_camera": ["killall com.ohos.camera"],
+ "start_screenshot": ["aa start -a com.ohos.screenshot.ServiceExtAbility -b com.ohos.screenshot"],
+ "start_photos": ["aa start -a com.ohos.photos.MainAbility -b com.ohos.photos"],
+ "cp_db": ["cp /data/app/el2/100/database/com.ohos.medialibrary.medialibrarydata/rdb/media_library.db /data/photo.db"],
+ "kill_photos": ["killall com.ohos.photos"],
"all_actions": [
- [1, "open_camera_log"], [5, "start_camera"], [2, "take_photos-x-y"], [3, "take_photos-x-y"], [2, "convert_to_video-x-y"], [5, "take_photos-x-y"], [2, "stop_video-x-y"],
- [6, "convert_to_photos-x-y"], [2, 670, 40], [1, "recover_log"], [1, "check_result"], [1, "shot_cmd", "camera_to_photos"], [1, "cmp_cmd-level", 1900000], [1, "cp_db"],
- [1, "get_file_from_dev", "/data/camera_photo.db"], [2, "camera_photo_check"], [1, "compress_log"], [1, "get_file_from_dev", "/data/log/hilog/camera_log.tar"], [1, "kill_camera"]
+ [8, "start_screenshot"], [5, "start_photos"], [2, "last_photos-x-y"], [2, "shot_cmd"], [1, "cmp_cmd-level"], [1, "cp_db"], [1, "get_file_from_dev", "/data/photo.db"],
+ [2, "photo_check"], [1, "process_check", "com.ohos.medialibrary.medialibrarydata"], [2, "sandbox_path_check"], [1, "kill_photos"]
]
},
{
@@ -114,7 +112,7 @@
"entry": "aa start -a MainAbility -b com.ohos.note",
"kill_note": ["killall com.ohos.note"],
"all_actions": [
- [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "shot_cmd"], [1, "cmp_cmd-level"], [2, "recent-x-y"], [1, "recent_del-x-y"]
+ [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [5, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "permisson_ok-x-y"], [2, "shot_cmd"], [1, "cmp_cmd-level"], [2, "recent-x-y"], [1, "recent_del-x-y"]
]
},
{
diff --git a/screenshot32/resource/camera_to_photos.png b/screenshot32/resource/camera_to_photos.png
index 7576982f106891c81563b38d5a6e5fe468fce6ed..1dc276ef3ca3805639028643dd582377b1a2d5eb 100644
Binary files a/screenshot32/resource/camera_to_photos.png and b/screenshot32/resource/camera_to_photos.png differ
diff --git a/screenshot32/resource/camera_to_photos.pngraw b/screenshot32/resource/camera_to_photos.pngraw
index 9783b7b2ced436a34be4cc7df9c7a94e4339b305..28661e94340bb64b8a4218db4854f6fbbb0f525f 100644
--- a/screenshot32/resource/camera_to_photos.pngraw
+++ b/screenshot32/resource/camera_to_photos.pngraw
@@ -1,1524 +1,1808 @@
-;CK%/&.8W^e%/%/%/V\c%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/W^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eW^eafm:AJ%/%/%/^djz~z~z~z~z~z~z~z~z~z~z~z~z~z~z~z~%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;Ddjp>FN'0:19BHNVsx~rw}FMU.6@-5>DKSotzdjp>FN'0:19BHNVsx~djp>FN'0:19BHNVsx~qv{%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/bgnflrEKT,4>3:DJQYrw}%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/otzGNV,4>+3=BJRfkrrw}IOW5H%/%/%/!*3"*5"*5"*5"*5"*5"*5"*5"*5"*5"*5"*5"*5"*5%/%/%/3;D;CK%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/;CK%/%/%/%/%/%/%/%/%/%/;CK%/%/%/%/%/%/%/%/%/%/,4>,4>,4>,4>,4>%/%/%/!*3,4>,4>,4>,4>,4>,4>,4>,4>flr7>H%/%/%/%/%/%/%/%/%/%/X^e%/%/%/%/%/%/Z_f%/%/%/%/%/%/%/%/%/%/bgn`fl%/%/%/%/%/%/%/%/%/%/)1:%/%/%/GNV%/%/3;DX^e%/%/%/%/%/%/%/%/%/%/%/&.8'0:%/%/%/%/%/%/%/%/%/%/%.7X^e%/%/%/%/%/%/%/%/%/%/%/&.8X^e%/%/%/%/%/%/%/%/%/%/%/&.8Zag%/%/%/OV],4>%/%/GNVJRY%/%/%/%/%/&.8!*3%/%/%/%/%/v{%/%/%/%/%/%/|%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/OV^`fl>EM%/%/%/%/V\c%/%/%/GNV%/%/3;D%/%/%/%/V\cIOW%/%/%/%/int%/%/%/%/nsysx~%/%/%/%/ejq%/%/%/%/V\cIOW%/%/%/%/%/%/%/%/V\cIOW%/%/%/%/int%/%/%/19B,4>%/%/GNV%/%/%/%/>FN2:B%/%/%/'0:%/%/%/%/%/%/-5>%/%/%/@GOcio%/%/%/%/^cjjou%/%/%/'2fkr%/%/%/%/%/%/%/GNV%/%/3;D&.8%/%/RX`%/%/%/%/flr/7A%/%/%/PV^V\c%/%/%/+3=&.8%/%/RX`%/%/%/%/flr&.8%/%/RX`%/%/%/%/flrrv|%/%/%/%/,4>%/%/GNV^ek%/%/%/'2%/%/%/%/%/%/%/)1:,4>,4>,4>,4>,4>,4>,4>,4>,4>,4>,4>)1:%/%/%/6=F%/%/5H%/%/%/%/%/%/%/GNV%/%/3;D-5>%/%/%/jou%/%/%/%/%/%/%/%/~-5>%/%/%/jou-5>%/%/%/joubhn%/lrw%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/AHQCJR%/%/%/GNV*2<%/%/%/kqv%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/\bi%/%/%/@GP%/%/%/%/dioCJR%/%/%/V\c%/%/%/GNV%/%/3;D%/%/%/%/mrx%/%/%/!*3&.8%/%/%/int%/%/%/%/%/%/%/%/otz%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/AHQV\c%/%/%/%.7%/%/%/%/w|%/%/%/intjou%/%/%/+3=%/%/%/ciojov%/%/%/%/%/%/%/%/%/%/19B%/%/%/NT\^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek.6@%/%/3;DjjkjjkFMU%/%/%/-5>cio%/%/%/3;D;BK%/%/%/_elFMU%/%/%/-5>FMU%/%/%/-5>%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/AHQz~%/%/%/%/Y^fHNV%/%/%/%/%/%/%/%/%/%/gms%/%/%/%/%/%/%/%/%/%/%/%/BJR%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;Djjl9::9::jjldio%/%/%/%/~[ah%/%/%/;CKAHQ%/%/%/W^edio%/%/%/%/~dio%/%/%/%/~%/%/%/*2<%/%/AHQ%.7%/%/%/%/08AV\cQW^)1:%/%/%/%/+3=%/%/%/%/%/%/%/%/%/%/Z`fJQY%/%/%/%/%/%/%/%/'2otz%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;D}~~BCC%&&%&&BCC}~VVW%%%BBCBBC%%%VVX}~vz%/%/%/%/TZb[ah%/%/%/;CKBIQ%/%/%/V\cvz%/%/%/%/TZbvz%/%/%/%/TZb%/%/%/,4>%/%/GNV%/%/%/%/%/%/%/%/%/%/%/%/sx~%/%/%/%/%/%/$,6%/%/%/6=F19B%/%/%/%/>ENOV^08A%/%/%/%/fkq%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;D9::9::stv../_`a_`a../%&&stv}~~%/%/%/%/>EMbhn%/%/%/5EM%/%/%/%/>EM%/%/%/,4>%/%/GNV&.8%/%/%/%/%/%/%/%/%//7A%/%/%/lrwjou%/%/%/+3=%/%/%/%.7NT\%/%/%/,4>jou%/%/%/%/%/%/%/FMU%/%/3;D89:VVW}~~}~~VVW9::VVW../}~}~~../VVW}~~899'2%/%/%/19Blrw%/%/%/!*3'0:%/%/%/hns'2%/%/%/19B'2%/%/%/19B%/%/%/,4>%/%/GNVvzIOW19B.6?9AJ%/%/%/%/~%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/2:B%/%/%/'2%/%/%/%/~@GP%/%/%/U[b%/%/%/GNV%/%/3;D}~}~~9::VVWVVW9::}~~899%.7%/%/%/*2<%/%/%/%/%/%/%/%/~%.7%/%/%/*2<%.7%/%/%/*2<%/%/%/,4>%/%/GNVTZb%/%/%/JQYotz%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/;BK%/%/%/%/%/%/%/%/hns%/%/%/2:B%/%/%/GNV%/%/3;DBBCVVWVVWBBCVVWrturtuVVX}~~899+3=%/%/%/$,6%/%/%/%/%/%/%/%/+3=%/%/%/$,6+3=%/%/%/$,6%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/JQY%/%/%/"*5RY`%/%/%/,4>,4>,4>,4>,4>,4>,4>,4>,4>,4>,4>,4>)1:%/%/%/DKS%/%/%/%/vz}%/%/%/%/flr%/%/%/'2%/%/%/GNV%/%/3;D%%%}~%&&rturturturtv}~~8993:D%/%/%/'2-5>%/%/%/RX_Y^f%/%/%/*2<3:D%/%/%/'23:D%/%/%/'2%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/JQY*2<%/%/%/sx}*2<%/%/JQY%/%/%/NT\%/%/%/%/jov%/%/%/%/y~%/%/GNV.6?%/%/%/gms%/%/%/3;D%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/>EN>EN%/%/%/%/%/%/%/%/%/%/%/x|%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;D%&&KLMijj../VVWVVW../rtu}~899vz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hns&.8%/%/%/%/%/%/$,6{vz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hnsvz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hns,4>%/%/GNV[ah%/%/%/6=F7>H%/%/%/vzz~v{~BIQ%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/>ENX^e%/%/%/%/%/%/%/%/*2<%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;D9::_`b_`a9::}~899vz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hntqv{EKT-5>,4>CJRntzvz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hnsvz%/%/%/%/%/%/%/%/%/%/%/%/%/%/hns,4>%/%/GNV%/%/%/%/V\c%/%/%/8@I`fl%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/>ENmrxGNV3;D&.8;BKRX`~%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/%/3;D%%%KLN}~899,4>%/%/GNV2:B%/%/%/z~%/%/%/%/%/%/%/TZb%/%/%/NT\^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek^ek.6?%/%/3;D%%&89:89:,4>%/%/GNV[ah%/inu>EN3;D)1:"*5.6?FMUotz%/%/%/GNV%/%/3;D%%%%%%BBCrtu,4>%/%/GNVijj%&&`abijjBBCBBCijjrturtuBCC9::899ijjBBC BBCijj9::ijjrtu9::899%&& %&&ijjjjkjjl9::}~~}~~9:: }~~9:://0VVW9::}~~}~~9:: }~~9::_`a//09::}~~}~~9::899_`a _`a899}~~9::VVWKLM}~~%%%%&&}~~rtuijj//0 @@Artu}~~9::VVWVVW../%%%}~~}~~ ../}~~9::VVWVVWVVW//0 }~~9::nsy9::VVWVVW899899 }~~9::Z`f%%%VVW}~~%%%rturtu }~~9::Z`fZ`fZ`fZ`fZ`fZ`fZ`fZ`fZ`fZ`fZ`fZ`gZ`gZ`gZ`gZ`gZ`fhnsrv}Z`fBBCVVWVVWBBCVVWstv }~~9::glr\biZ`fZ`fdiodiodiodiodiodiodiodiodiodiodiow{w{ejqint{Z`fZ`fZ`fZ`fZ`fZ`fZ`f|hnsejq{}~~}~~899VVW ccc}~~vz^cjlqwZ`f~dioZ`f|Z`fintz~\biZ`fZ`fz~Z`fdio}z~]bjZ`f899VVW}~}~VVWBBCVVW//0}~ 111 }~~vz^cjZ`frv}Z`fZ`fafm]bjz~{Z`fZ`fy}_dk_dkBBCBBCrtu%%%//0`ab eee*** dddvz^cj]bjbhnrv}Z`f{Z`f\bi\biZ`fbhnZ`f}~~BBC%%%%%%BBC}~~VVW%&&BCCBCC%&& ooo vzZ`fptzZ`frv}Z`fmrwZ`fw|_dkZ`frtu899|||*** cccvzZ`f]bjZ`frv}Z`fZ`fglrfkrglrejqz~}Z`fijjijj vz^cjy}Z`f`elrv}Z`fZ`fZ`fZ`fZ`fZ`fhmsv{^cjZ`fZ`frv}444 bbbvz^cjglrZ`fmrx||||||||bhnZ`f|||||||uy~Z`f\biafldio]bjjov^cj vz^cjZ`fZ`fdiodiodiodiodipdipdiodio\biZ`fdiodiodiodiodiodiodiotx~mrxZ`fZ`frv|Z`fLMMyyyvz^cjuzrv}Z`fZ`f~Z`fv{Z`fvz^cjrv}Z`fZ`fuy~Z`fz~Z`fvz^cjrv}Z`fuzZ`fZ`fZ`fZ`f~Z`fvz^cjrv}Z`fZ`fnsyZ`fZ`fz~choafmZ`fvz^cjrv}Z`fx|Z`fdio|z~aflZ`fZ`ffkr~vz]bj^cjZ`f\bivz^cjrv}Z`fx|fkrejqz~v{dipinudioZ`fZ`fZ`fZ`fZ`fZ`fZ`fZ`fquzvz^cjrv}Z`fvz^cjrv}Z`f
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ###&&&***,,,,,,***&&## $$$222:::;;;;;;::::::::::::::::::::::::::::::;;;;;;:::222$$$ ...::::::999555,,,"""""",,,555999::::::... '''777:::666*** ***666:::777''' +++888777--- ---777888+++ ***888666&&& &&&666888*** """555555&&& &&&555555""" ///777*** ***777///
-
-
- 555222 222555
-
-
- (((777*** ***777(((
- ,,,666"""
-
-
-
-
-
-"""666,,,
- ...444 444... 000222 222000 ///222 222/// ---444 444---
-
-
-***666 666***
-
-
- """777!!! !!!777""" 666))) )))666 222000 000222 &&&777 777&&& 777((( (((777 ///333 333/// 999!!! !!!999 111333
-
-
-
-
-
-333111 :::""" """::: ///555
-
-
-
-
-
-555/// :::&&& &&&::: """::: :::""" 666222
TTTlll%%% 222666 ;;;""" rrrbbb """;;; ::: >>>LLL ::: ...888 jjj444 888... :::... xxxvvv ...::: <<< zzz^^^ <<< ;;; zzzEEE ;;; """;;;
zzz... ;;;""" +++::: zzzooo :::+++ 222888 zzzUUU 888222 555555 zzz 555555 888222 zzzuuu 222888 ;;;... zzz&&&