中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]********findstr/a之用法质疑********
« [1] [2] »
作者:
标题: [讨论]********findstr/a之用法质疑******** 上一主题 | 下一主题
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『楼 主』:  [讨论]********findstr/a之用法质疑********

看到electronixtar兄发的ColorDemo.cmd(http://www.cn-dos.net/forum/viewthread.php?tid=35609&fpage=1)中有一句代码是用findstr来实现显示彩色字符,很佩服前辈的才华啊。我findstr用得少,今晚发现这个命令的/a参数使用有点奇怪,通过findstr/?查看帮助,解释是:

  /A:attr   指定有十六进位数字的颜色属性。请见 "color /?"

再看color/?,解释是:

  attr        指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为
前景。


这么说来,对于findstr的参数/a,就应该是输入两个十六进制数字啰。但是实际情况不是,我尝试了n次,发现4个十六进制数字有效(多于4个的取最后4个),而在color命令后则不行。这四位中的后两位数好理解,就是如上述的“指定控制台输出的颜色属性“,而前两位是干什么用的呢?我发现是用来控制所显示的文件名字符串(包括之后的冒号)之间的横线和竖线的显示的(包括其有无及粗细),但又好像不全是,因为有时前两位数会影响到后两位数,致使后两位数失去它们的指定颜色的作用(比如2c04)。


TEST:(似乎构成等差数列,公差为4)
1.(横线)
findstr /a:040a . %systemdrive%\boot.ini*
2.(竖线)
findstr /a:080a . %systemdrive%\boot.ini*
3.(横线+竖线)
findstr /a:0c0a . %systemdrive%\boot.ini*
4.(竖线,注意与第2种情况对比)
findstr /a:100a . %systemdrive%\boot.ini*
5.(横线+竖线,注意与第3种情况对比)
findstr /a:140a . %systemdrive%\boot.ini*
6.(竖线,注意与第2,4种情况对比)
findstr /a:180a . %systemdrive%\boot.ini*
7.(横线+竖线,注意与第3,5种情况对比)
findstr /a:1c0a . %systemdrive%\boot.ini*
8.换成200a就没有横线和竖线了。

9.后面还有,如:(貌似和1c0a一样)
findstr /a:dd0a . %systemdrive%\boot.ini*
10.还有些情况是“表格”里居然什么都没有,或者表格最右端出现一条很粗的竖线,另外注意表格边框上的横线和竖线(不同的参数下会导致边框线有时显示,有时又不显示)。还有有时当你把cmd窗口滚动条向上滑动去看上边的命令执行结果然后回过来看,会发现下面的刚执行过的命令的结果居然变了!灵异事件!(比如5c0a)



再来个测试用批处理:

@echo off
setlocal
set begin=%1
set end=%2
set step=%3
set colo=%4
if "%4" equ "" (
        echo 四个参数:
        echo 1.起始值(两位16进制):如04
        echo 2.终值(两位16进制):如2c
        echo 3.公差(10进制):如4
        echo 4.后两位颜色设置(两位16进制):如0a
        echo 例如:%0 04 2c 4 0a
        set begin=04
        set end=2c
        set step=4
        set colo=0a
)
set/a n=0x%begin%
set t=test.tmp
pushd %tmp%
if exist %t% goto :test
for /l %%a in (1,1,5) do echo.^ >>%t%
:test
call :10to16 %n%
if %n% lss 16 (set v=0%r%%colo%) else (set v=%r%%colo%)
echo %v%
findstr/a:%v% . %t%*
echo.
set/a n+=%step%
if not %n% gtr 0x%end% goto :test
popd
pause
goto :eof
:10to16
set/a q=%1
        :1c
        set/a r=%q%%%16
        set/a q=%q%/16
        call set r=%%r:10=A%%
        call set r=%%r:11=B%%
        call set r=%%r:12=C%%
        call set r=%%r:13=D%%
        call set r=%%r:14=E%%
        call set r=%%r:15=F%%
        call set r%1=%r%%%r%1%%
if not %q% equ 0 goto :1c
call set r=%%r%1%%
set r%1=



*********************************
注:
以上结论纯粹是我个人观点,大家也来试试,这到底是怎么回事呢?

我的操作系统是:
XP Professional 5.1.2600

[ Last edited by s11ss on 2007-11-23 at 10:35 PM ]

2007-11-23 22:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 2 楼』:  

和DEBUG中的 debug 很像..
f b800:0000 f9f XX YY
貌似XX代表样式 YY代表颜色.

2007-11-24 12:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 3 楼』:  

哦?我想可以用这个特性来画表格..................

2007-11-24 17:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 4 楼』:  

哇咔咔,很难得一见的技术贴,真不忍心给水了

那个ColorDemo.CMD不是我写的,我只是转帖,而且我也不是什么前辈,只是一个p处理爱好者而已。




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-11-27 19:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 5 楼』:  

现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
转换多位的:
@echo off
set "Hex=0123456789ABCDEF"
set /p S=

:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16

echo %C%
set S=
set R=
set C=
pause
[ Last edited by zh159 on 2007-11-27 at 08:09 PM ]



2007-11-27 20:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by electronixtar at 2007-11-27 07:48 PM:
哇咔咔,很难得一见的技术贴,真不忍心给水了

那个ColorDemo.CMD不是我写的,我只是转帖,而且我也不是什么前辈,只是一个p处理爱好者而已。

electronixtar兄不要谦虚啦~~诶,兄的签名档中
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
这句怎么我运行后提示“没有可以显示的页面”啊?还有about:都有哪些用法啊?

2007-11-27 20:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by s11ss at 2007-11-27 20:08:

electronixtar兄不要谦虚啦~~诶,兄的签名档中
cmd /cstart "" "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>& ...

那就直接运行iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> 试试?哇咔咔

[ Last edited by electronixtar on 2007-11-27 at 08:19 PM ]




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-11-27 20:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by zh159 at 2007-11-27 20:07:
现在10to16不用这么罗嗦了,如果只转换一位(0~f),用下面的就OK
set "Hex=0123456789ABCDEF"
set /a R=
call set R=%%Hex:~%R%,1%%
转换多位的: ...

:P 看不懂,牛B了,很久不来这里高手依旧那么彪悍




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-11-27 20:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
upsco
初级用户





积分 67
发帖 32
注册 2007-11-19
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by electronixtar at 2007-11-27 08:11 PM:

那就直接运行iexplore about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'> 试试?哇咔咔

[ Last edited by electronixtar on 20 ...

我们怎么引用都运行不了,要是我们这样就能运行你电脑上的某个程序,嘎嘎,你可惨了

2007-11-27 20:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by upsco at 2007-11-27 20:25:



我们怎么引用都运行不了,要是我们这样就能运行你电脑上的某个程序,嘎嘎,你可惨了

那么你肯定没有安装 Microsoft Office 2000/XP/2003/2007 中任意一个版本




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-11-27 20:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 11 楼』:  

zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性,我的啰嗦但提高了代码可读性。

[ Last edited by s11ss on 2007-11-27 at 08:46 PM ]

2007-11-27 20:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by electronixtar at 2007-11-27 08:28 PM:

那么你肯定没有安装 Microsoft Office 2000/XP/2003/2007 中任意一个版本

我装了 Microsoft Office 2003。好像是经过修改的。

2007-11-27 20:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by s11ss at 2007-11-27 20:30:
zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~

其实核心就是几行:
set "Hex=0123456789ABCDEF"

:10to16
set /a R=S%%16
call set R=%%Hex:~%R%,1%%
set /a S/=16
set C=%R%%C%
if not %S% == 0 goto 10to16
这段代码是从一位版主(忘了)的代码里简化来的

那个是vbe6.dll里的一段MIDI音乐,我也没成功,直接把它提取出来了
为节省上传文件数量,转换为VBS:
bs=_
"NRFakBAAAYAABAgBAAcTUJ3aAAAAiAw//NAAAEEA/jFBEIAGIAw/ZJA/AAw/RNwBm1igWCy/vAQTUJ3aAAABADw/DowU0JXaud2cgACIAU7BQBQxbBw/E0AUhRGI0ACKjh2bpJXKAUrCUUYfV+iSNV4LKJIBV+SVSU4LV9XlvU1I"+_
"F+SVB2Xl2s0SFazSDaRl2MlIFazUByXl6UVRFqTVD6Rl6AlIFqDUB6Xlv40RF+iTDaRlv0EJF+STBuXl080SFSzTDqRlxgEJFGDSBqXl2E1QFaTUD2Rl2YVKFajVBaXl4s0SFizSDSRl2o0KFajSHaXlsYUg4UILGFoSVODRBiTh"+_
"zQUgJV5MEFINFODRBiUluwTg7UoL8EIRVqyOBaThqsTgKVZM9EYOFGTPBmUlsEUg8UILBFIRVOjQBeThzIUgKVZM6EoOFGjOBiUls4Tg1UIL+EoSVOTOBKThzkTgMVpLAFIOF6CQBaUl4kkRFiTSD+Rl2oEJFajSBqXl4olHFijW"+_
"RUJOmBSh4YmDVizUiUIOT9Ql5AGIFmDYUUpOjNSh6M2CVqTZbUoOlJRl6oGJFqjaOU5L/hRhv8XGV+CdqU4L0dQlvEXJF+ScKUZMgZRhxAmGVGzcSUYMztRlyknJFKTeNU5Mw1RhzAXEVOjabU4MqlRlzM2DFOzYfUJN9E4MFSTP"+_
"ByUlvUUg2U4LFF4SVqCPBOThqwTgMVZMGF4MFGjRBCVl0UUg4UINFFIRV+SPBiThv0TgMV5LDFYOF+yQBOUlqEUg1UoKBF4SVqCRBmThqQUgJVZM9EYOFGTPBSUlsIUg2UILCFoTVODRBOThzQUgLVpNVRUh2U1gbU5MJhShzk0h"+_
"3V5LIdUhvgkgOU5LRVRhvE1eV+iSiU4LKF4eVajUIVoNSNYGVazSlUoNLFoeVqzUGVoOTN4GVaTTmUoNNF4dV+ySHV4LLJIDV+SUQU4LR5XlvYVLF+iVBKXl0skSFSzSDqRlxY0IFGjRBqXl20kRFaTTDmRl64UKFqjTBiXl4EFS"+_
"FiTUDeRlzw0IFODTICQls4Tg5UIL+EIRVOTRB6ThzUUgGV5M4E4NFODOBaUluwTg7UoL8EYRVqiPBSThq4TgQVZMFFoMFGTRBqUls0Tg3UIL9E4SVODOBiThzgTgKVZMCFYMFGjQB+UlsIUg4UILCFISVOTRBiThzUUgIVpL5EIM"+_
"F6SOB2Ul440RFijTDyRl2EVJFaTUBeXl48FGFizXaUJOZVSh4kFCVizUlUIOTtQl5E2HFmTYSUpOtNSh602DVqDYfUoOgNRl6EXGFqTcUU5L99Rhv03DV+SapU4LpxQlvQnJF+CdIUZMm1RhxYmEVGzcWUYMzpRlycnHFKzdVU5M"+_
"6VRhzoHGVOzZZU4MnZRlzAmFFODYdUJOQ9Rh4AlQVOzSrU4MLNQlvsEFF+yS9V5MSxRhzIFRV+iUUU4LStUlvU1IF+SVBqRlz0UJFOTTAVZMlRRhxUmGVGzXdUYMfRRlxAFJFGDULUpMiBShyIGEVOTaeU4MpBRlz4mGFOjbYU5M"+_
"wlRhzAHGVSzfeUIN/FRl2A3JFaDcKUpN3ZSh2cnCViDaeUIOoJRl4QXEFiDdeUZO0BSh5QXEVqjdVUoO2tRl6AWGFqDYYUpOc5Qh6wVHVyiOB2ThsoTgHV5MCF4NFOjQBiUl0kkSFSTSDWRlzUEJFOTRK2x/vAQTUJ3aAAgC4Bw/"+_
"DowR1lGdhJHIgACIAY7BkBgxYBw/E8AUhRGIxACKuV2dgE2ZllCA2qAZH6jl40UA/okB70UgkZ4PKtwONBAONpil40SA/QjA7IDUGiTLBsjMG8DNGYJOVNwPUFwOJJlh/QFA7kUA4UVCWuDRCgTRA8TRSZ4OEFwPFFAOFFITW+TU"+_
"DoDSAYDVBymh/EVA6gEB2Q1IWqTNBYTND8TNRZ4P1UgO1EgN1wgl/oUB2kUA6EVg9Y4PKNlNJdgORRml2oUA60EB90UgnZoNKNQPNtgONFil9cTA6QzA2cjUGazNDoDNB0zNNYpOUBgNTFQPKF4PG2jSAoDVAYzUBCkl4M1A7YVA"+_
"/YVgoZIOTJwPWJwOWlil/AjA7AzA4UjTG+DMBsDMIgTNJYJOVRwPNJwONFIPG+TTAsTTPhTVvZZPNJAQJRAOUF4aG2TTAgDVBAUSoYJOzIAQtEQPwMlhA1SA4MDA9ADEW2DVBgzTEA0SByjhAtEA48EA9QVg8YpOTNgNVJwPRF4Z"+_
"GqzUC8TUMYTVBegl68kA/0UA2sUgAZoOPBwPNBgNLFYPWCESBsDVGgDTByjh7QFAAhEA4wUWWqjKCYjLE8jNMZoNukgOqEwP2cgl/AFB6E1A24Ug78jUCYoORBgNOFgl4UFA7gUMG+DUBOwOIJAOVBwPSZ4AW+TUEgTSBsjVBWmh"+_
"/E1B4kUC7YVgKY5PNFAOOFwOMFIQGuDTAgjTd8TTB+hl/IFB6sUA2gUgpZoOLBwPStgNIRil6cDA2YTA/kSVG+TKBozNCYjNLY5PORgNONgOJFIPG+jTXpTSCYjTkZpNTFQPQZgOOFYYG2DULYzUFojTpYpNvIQPwAgO2Ilh9ATA"+_
"6YTA28iCW2zTBoDTBYjUQZYPPZgOMFgNSdgl2c0A6kEA9QkTGazRB0DRCoTSBukl/Q1A4gEB7YVgnZ4PUVwOWBAOI5il7UTA/0iA4MTUG+TLCsTNCgzMHYJOJNwPWFwOLJlh7skA/YVA4kkBWuTQC8DRDgzPNZ4OBJAO/YwPEF4R"+_
"W2jVBgjSBAUVBWmh4oUD9Y1AAVVgJYZPNBAOSJAQOFYQG2TTAgjUAAkTBujl6YlB/AlA2UVglZoOWdwPQZgNVF4BWqDTE8TUBYzTB+jh/EFA6wEA28Ug6Y5OQZAQIBAOSFIQGuDUAAESAgjUB2jl/8UA6wEB2sUg8wCQCYoOMBgN"+_
"LpxPPFoGsAECWiDTAMzUEszTPZ4MTlAOMBwOPRgl7wkA4AkAz4TQGuDTEgDQFMjPTY5M7E4OGOzOBY5MUhAOTJwOIFYPGODVYgzUMsDSBmhlApkA4kUA7sUgsZ4OLdAQKJAOJNil4MjAAZTA7oyUGujKFgzMEAkNHYJQKNwOJNAO"+_
"MFIPGuTSAgDTAAkSB2jl2UFA940B60UglZYPOFgNVpgONFYBW2jUFYDUEojVB6jh2AFA9IFA6YVg7Y5OLVAOLFAQKF4aGuzSFgzSBAkSBegl78EBAxUB44Ug+YIQMBAOOhxOPFIJWuTUBYTVH8zUBWmh2UVB7E1B/MVgIYpNLFwP"+_
"PNwOUNlh/8kA2skA7QFBW+jOCYDPDsTRQZoN8IwOFdwP6EoQW2TUDYTTEoTSOZYPRBgNNdgOJRgl2kEA6kEB9Y0QGqTSIYTSF0jRBykl9oUB20EA6YVg/YYPKBgNNBgOWFYPW+jTBgTUCsTUBSmh/40C4EFC7EVgHY5OSNwPUBAO"+_
"OFlh/QVA440A7IlBW+jPBsTREgDORZ4P+EAO4EwOFF4RWqjUE8TTBYjVVZ4PNJgOSVgl/cEA2IUAGajVGYpOLJkh2I0A6sEA/cUgSZ5PQRAOORwOLFoO7w0A4QVAA1EAG+DUggjTMszSBmAOUFAQNFwOMZ4AW+DVCgzUIsjVBemh"+_
"/QlA4MFB7Y1KWuzNB8zMDgjNPZ4PzQwO3MAO2Ygl44kA7MVA/g0UGuzUAgjTD8DSHY5OJJwPMFAO/Mlh48TA/wEA7kUgJZpOINwPJRgNUF4ZGqDSG8TSHYDVmYpNrEgOrIwPxElh/EDB6siA2sSCWaTTAozSB8jVNZoOLVwPWRgN"+_
"NVgl2UkA/IkA6g0UGaTRBoDSC8jQBakl9ElA2UFB6UFUGaTVC0TUCoTVFYpOOFgNIZQPGNkh64EB2gUA9YUgQZZPRZgNTRgOTFIPGazUA0TUAozUBmjl/Q1B70UA4kUgnZ4PUJAOJhwONF4BW+TTFgTSEsDTB6jh/0EA7wEH4kUg"+_
"fYJOTJQPVVAQTFYZGizUD0TVKA0UBegl44EB9AVBApUg8YIOOBQPQBAQKFoOWqDUG8DTBYzSBWmh6AFB/wEC2sUgLYpOQBwPVJgNPFYQGqDUA8TVAYzTByjl7YVBAJVA4QVg+Y4OWBAQSBAOUF4OWqzSG8TSBYTTBqzOQJwPIBAO"+_
"MJgh6sEA200G/kUgXsDUB8DSFgDTGWgl4skA/Q1A78UgtZIOLRwOPNwPUJil7sSA/4CB40SUGuzKA8jLBgTLNYJOPRwOMFwPLF4PGuDTAgzT08zSBugl60EA2YVA/wUgsZoONJwPMJgNWZil28SB68SA/IzUGazLBozLC8jMKY5P"+_
"SRgOSRgNWFIPG+jUUpjUEYjVmZZPOBgNKZgOPtkh940B2o0AWqTTCYoOPJgl2wkA9skRGqTTIYDTD0zSBukl9QVB28EB6EVg8YYPUBgORBgNPFoPWizSA8DTBsTTBWmh/w0C4sUC70UgBY5PONAOPNwOLFYQG+jTAszSbgzTBGil"+_
"4UlA90EBAFFUGiTVF0TTBAUUDYJQGNQPARAOH9jhAZEB9A0B4cUgOZJORRQPIJAQRFIQG2DSAgTUAAUUB+jl/8EB2UVA6oUgsZoOKFgNVJwPPNil24SA6sSB/kyUGqzKFYjLB8TKHY5PPNgOLRgNIFYPGaDSAozSA8zTBujl7g0A"+_
"AlkA4YVUGuDSBAUSGgjVAYJOBhwOHBAQINkh4EkAAhkC7cUgMZpOVJwPVRgNWF4PsoDAGqTVAYjVf8TVBqBL6Mgl40UAzokA78UgBNTOmY4MKdAONVwOPpil4cTA7kDBzUDUGuTOAMTOBgzNBMTNKY5OTJAOTJwMN1kh7MlA4MVB"+_
"z00BWOTTBgTQCsjRPZIOBVwMNJwOGxgl4YFAzAFA7slWGODUAgjVGYJO/AwMMF4OGuzWFY5Odhlh48DAzwECWOTSAgDScZ4OdRgl7kEXGOTSEY5MIplhzgUA4gUA7kEBWujSAgjUAMjTaZIOSBwOKBwMORglxwTg0YYM8wgl04kA"+_
"xkkA9UVA4wUg54CODYIOMBQPVBQMJBANOZll6oyA/QDA2ATAzYzUG+DNCojKBYDMAMjNI4COFY5MINgNTJgOWJwPUFIPGazUAojVvMDSI8DVBSgl/IlA4oEB7oUgsZ4PSZAOKRwOKF4BWuzUC8TSBgjVQZ4OTBwPJRAOWdgl74zA"+_
"/UUA4QEVGujPCgDRC8TRBGkl44EB9oEBAxUg/YIOOBQPKBAQMFoOWqTTD8TUFYjUBODOLZwLPVgh60EA2IlBWOjTUgTTGY4PRtgl7k1iwYIOLhwLP5wMOpAONZxOZBw/vAQTUJ3aAAQHmBw/DoAUpFmbvBCIgACIAc7BkBwxuAw/"+_
"E8wTyNGalNHdyFGbggUYyBHA3qAHG2yl/AGLH+DY3c5PfZyh/8VOXiTWucIOZNzl/01JH+TX2cJOaxyh4oFNXizXucIOfVwl/EmKH+TY1c5PYNAOdNyh40FA/gFaXqDXtcoOchzl/UmKH+TZzc5Pb5yh/sFNXqDWocoOYhzl/wFK"+_
"H+DX0c5PYFzh/gFBXqzWjcoObxzl/0VJH+TXsdZPjlyh9M2MXaDZscoNkdzl9M2KH2zY1cpNZRyh2kVOX2TWrcYPZdzl2EHJHaTcMcZPhlyh9EmNX2jWucYPaJ2l481LHizXxc5PZxyh/k1MXijXqcIOedzl/klKH+TW0cJOZlyh"+_
"4kFPXijXscIOeJwl/0VKH+TX1cJOjxyh4MmZXiTXncIOdpzl9glJH2DW2cJOfpyh481OX2jXkcYPexzl4YWJHijZ2cZPxZyh9E3CX2TYpcYPhtzl4sFJHizWpdpOcxyh6w1MX+DWpc4PYlzl/QGLH+DZzcpOhpyh6E2NX+TWtc4P"+_
"ZBzl/E2LH+TYGcpOclyh6wlNX+TXqc4PdZ2l7U2KHuTZ1cJQexyhA5lMXCUZmcIQlhzl74FKHujX9c5PjZyh/M2NXqjZtcoOmNwl/k1JH+TW3c5PjBzh/MmMXWFNXcYV0wxlTBTHHOFMTcZVoAxhVhiHXOlLbc4UuUxlVpUGHWlS"+_
"Yc5UC9whTJ0HXW1VacYVXhxlThUEHOFSecZVBxxhVFEFXOFYXc4UgZxlVxzEHWFPdc5U4gxhThTHXW1CecYVL8wlTtRFHO1GZcZVdUyhV1RDXOlBVc4UGkxlzEGA4IGKHOTYAgjYNcpOfBwMkdyh68FAzQmBXOTZDgTZkc4MlJAO"+_
"lVwl60VB98VJH2zXCoTXFcpOdNQPmhyh601A9Y2AXiDZCsjWqcIOkJwl48VAHujWCc5MbdyhzsVB48lAXqDYBMjZnc4MmJgOghwlzQWA6IGKHqjYDMDZDc5OlNAOaVyh7UWB4olAXOTWCgDYlcIOgJwMZhwl6wlA9oFJH2jWAoDX"+_
"IcpOmJwMhtyhzE2AXuzYBcoOmFwl4gVKHuzYEgDWBc5McNAObpyhzwVA4sVBXqDZBMjYncoOkZwMiFwlz8lA6AGLHqDYAcpOdFwhz8FAXOjZscoOdFwMmNwlzYGA681JHOjZAozXLc5MZFgOfZyhzklB68FAXqjZFMjYmc4MiJgO"+_
"mdwl2UWAzkVJHaTZCMTWEc5MfNgOZZyhz81A6kVBXODXDoDZnc4McJgOkRwl601AzIWJHOjYGoTXBcpOZVwMmNyhzYWB6kVBXaDWBoTXgcoNYZgOdtwl6QWAzMWIHqDZJMzYCcpOYJwMfVyhz81A6g1BXqjWCMjZmcoOaFwMmhwl"+_
"zMmA2YmJHOzYCYjZEc5MZFgOepyh641AzklAXGjXEYTYocoNhFQMeVwlxkVA4glJHiDWCETWFc5OYFgNf5yh28FAXaDWBc4OYJwl9EmJHaDWF0TYCc5OlNgNa1yh7UGA2oVAXijZBETYncYMhdwl9EWAHijZEcJOghyh9EWA4AmA"+_
"XajWCEDXmcYMcNgNadwl7kVA2QmJHaDZBsTWHcJOYBQMldyhxU2B4gVAXGTYEgDWlcIOYdQMhFwl7Q2A2MHKHazcCsDZEcZMlBgNmtyhxUmA2YWAXGTYBgjZtcIOmFQMhFwlxUmA60VKHGTZGoTXDcpNcBwOaVyh2wVA7o1CXOzW"+_
"AgTYlc4MbJAOhVwlzsVA4klKHiTWDMzWEcJOmFwMjpyh4YWAzMWAXiDWD8zWnc4PbVAOYNwlzI2A481IHOjYEgzXEc5OYBAOapyh7glA4olBXOjYDgzWkcIObFwMilwl4glAz8lJHiDWAMzXHc5PlJAOktyh/UmA4QGBXiTZA8DW"+_
"mcIOlVwPYFwlzAmA701IHuTXFMDYJcJOjFwPpJyh/kGB4MmBXODWCgjZscIOmJwMYBwlzwVA4slJHODXDgzWFcJOYFwPkdyh/QmB4g1AXiTZCMzYncIOlZwl4IGAHOzYAcZMhxyhxEWA4IWBXiTYCMTXnc4MdFAOhRwl4MmAxk1K"+_
"HizYDcJOeFwhxklAXGzXmcIOeJQMfVwl4QGAxYWKHiDZDEjZGcJOfFwMmhyhzYWA48lBXiDYBMDYsc4MgJAOgBwl0YmAxEGKHGTYCQjZGcJOZFQMepyh4k1Ax41AXOjXBgjXqc4MeFAOeNwl4EWAzM2JHOzYBgTYFcZMrNAOjRyh"+_
"4M2AxsWBXizXFETYncYMhNAOfFwlzAWB4kFKHODYDgTWEcJOiFANghyh4ImA0AmAXGzWCgDZocYMbZAOkJwl6glAzU2KHqDWAMTZBcpOjJwMmtyh6M2AzY2AXOzYAoDYocoOgVwMjBwlzQ2A6kFKHqTWBMDZEcpOZBwMlhyh6k1A"+_
"zU2BXazXAMDZpcoNfVwMkRwl6kFAzYGJHOjZCoTWKc5McBgOlpyhzwVA6UWAXqzWDMDYqc4MgBgObJwlz8FB6MWKHOzXBozYFcpOfFgNlJyh2U2B68lBXqDaCMjZpcoOoJwMmRwlzIWA6MWKHqzYCMjYBc5MdJgOjhyh6MWBz01A"+_
"XOzYCojZpc4MjJgOmBwl6IGBz8FJHOzXCojYIc5OkNANlNyh7QGB0UWBXajXDsDZoc4OkVgNeFwl7sVA0UWLHSTZAcJNlFwh7s1AXujYkc4OiBANlxwl00VA7EGJHuTYAQTXIc5OiBgNadyh7IGC2oVAXaDXEsDXlc4OcVgNcFwl"+_
"00lA7U2JHuTZFQTXFcpOYFwMYdyh6gFBzgVBXOTYAoTYncoOhFwMhRwl64VA2MmA60FIHazYHojXDoTXGcpOgBAN0Vyh0QnA6A2BXqDXBMzWpc4MbNgOcZwl6gVA0EmJHqDWFQTYCcpOaNwMZhyhzkFB6oVAXSjYCojYkcoOiJAN"+_
"ihwl74lA4QGJHujXCgDZHc5MmBAOddyh40lAzYmBXujWCMzXsc4MfFwOaRwl4MGA7klKHizYDsTWCcJOiJwOhRyh4IWA7EGCXOjYEsTXqc4MiBwOdVwl7oVAz41IHujWHMjXBcJOlVwOeNyh4UGA74VCXODYEsTXnc4MgNwOdRwl"+_
"zEmA4A2IHOTYHgDYBc5OgFwMZRwMgByh7A2AzAmAzklBXijYDsjXicIOiZwOedwl7EmAzsFKHuTYEMzWAc5OfJwMltyh781AzUGAXOzYFgzWkc4MjNAObRwl78lA4klKHiTWCszXDcJNgBwLlhyhvUWB0AGBXSzXC8CWqcINfBwL"+_
"YNwlvU2A0M2JHSzYC8SZDcJNbFwOb1yh0sVA7sVAXSzXF8SYmc4LhJANfNwl44VA0o1KHijXCQjWFc5LlJANmVyh0YWAvUWCX+iZBQjWnc4LmJANaRwl0oVA7EmJHSjWFsTYDc5OjRANaZyh7M2A0oFBXizWB8iWfcIObpwLaZwl"+_
"7cmA0AmJHuzZEQDYCc5LbVANZZyhvsVA0kVBX+SZCQjYmcINihwLlBwl04FA7w1LHSjXBsDXCcJNZJwLhNyhvE2A0k1BXajXBETYlcoNedQMhNwlxwlA2AmJHaDYBEDXHcZPgJgNgZyh9AmB2A2AXGjZBYTXncYMmJgNddwl2QWA"+_
"x8VJHaDZFEzXGcpOkBgNcZyh2wVA6Q2BXaDYCEDZkcYMkZgNgNwl2kFAxY2KHaTWDEjZBcZPjNgNhZyh2EmA9MGBX2DZEYjWncYPkZgNaNwl6oVAxoVIHqjWGEjWEcZPcJgNbRyh9w1C2sFBXGDXAYzYncoNjVQMcFwl2wVAxImJ"+_
"HaDXDEjYGcpOhBgNZxyh2klA6EGBXaTZBEDZkcoNldQMkFwl0QWAvE2KH+SYDc5LcFwh0QGBXSjYjcINiNwLcZwlv4lA0klJHSTWH8iXBc5OZNANbdyh7kVA0slBXSTZA8CZncINlFwLkZwl4EGB0gFJHSDWDgTYGc5LjNANadyh"+_
"0olAvM2BXSjZB8iWkc4LaBANmhwl0E2A7sVJHuzWAQTYHcJNeFwOhlyh7EGB041AXizWA8CWnc4LYNAObZwl7QmA0MmJHSzYCsDZGcJNiJwLm1yh0IGAvYmAX+CZDQjYnc4LkJANiJwl0oFB78FJHuzXCQjWHc5LeRANYNyhv4FA"+_
"0glCX+CWAYzWqc4LYFgNbRwl2IGB74VKHujXCYjYAc5OmJgQZhyhCllA7Y2BX+CWAYDWnc4LYJgNYZwl7YmA2gVJHaDWFsjZGc5OlFwPYtyh/gVA7UmAXaTWAsjYncoNZRwOiZwlvAWA2oVJH+CYAYjWGc5OZRgQiZyh7klACJmB"+_
"XujZDIEZoc4OmFgQkNwl2ImA/EWJH+TYDYjYFcpQgBwOiZyhCBGC7IGBXaTZCsjXmcoNlVwOeJwlvQGB2AWKHaDYB8CZDc5PkBwOfZyh/QGB78VCX+SYAYzWkcoNbVwLhVwlxslA28lJHGzWGYzXAcpNdJQMcpyh20FBxw1AXGDW"+_
"AYjXkcoNehwl2MWAHGDWDcZPdhyh2M2A90VAXajXFETYjcoNeBQMhhwl2EmA6A2JHqDYGYTYCcpNbFQMbZyh2sFBxsFBXaDZFEDYjcoNkhwl2UWAHGDYAcZPddyh90lB2UWBX2jYBYDXlcoNcJQPihwl6EmAxImIHqTYJEjYDcZP"+_
"lBgNaRyh9UWC2oVBXaDZAEjWlcoNkZwl2QGAHGjWBcZMdhyh2QGCx0VAXajZD0jWncYPaJgNmRwlx41A2gVJHaDWHEjXEcJOZBwMdNyhz0FC4kFAXqTXEMzXrc4MfJgOdJwl4glAzgFJHiDWFMDWCcZPlNgOaZyh6oFA9UGCXizX"+_
"AMTYucIOfFwMhJwl601A9AGJHqTXA0DYHcpOZBQPahyh9olB6k1AXiDYEMTWkc4MZNAOgVwlz4lA6ImJHqjYGMjXDcpOYFQPeZyh94lB6g1AXOTZDgDZicIOkdwMlVwlzoVA6gmIHqDaKMjWAc5MZFAOc1yh4w1AzklAX2jWBoDY"+_
"lcoOgdQPaBwl4w1A70lJHiDXGsTXBc5MjFgObtyh6sVBzMmAXqDYAMTZpc4MlJgOgJwl0MGA6AGKHqDYIQzYCcpOhNwMjlyh6EmAzMGBXOTYBozYjc4MhhgOjJwl6s1Azo1JHqzWAMjWGcpOaJANjpyh6olAXSjZBcINjJwl6EWK"+_
"HSjZBoTYDc5McRgOYtyhzwlA6gFBXOTWAgDZlcIOkJwMZRwlzI2A4sVKHOjYFgzWAc5MlNwOaFwMe5xh7o1Bz41BzUWAXqDbBMjZocoOsVwMmFwlzs1A401KHOzWAgTXGc5MYBgOfZyh68VAzgVCXOzWAgDXmcIOcVwMbBwlzkVB"+_
"641KHOTWBojXDcpUzgxhSNjFXC1MacIUzYxlSFzFHKVMZcJUskxhQxCGXKFRgcoUEJxlQ9DEHC1PccpUTtxhSNVFXClQPcIUCRylSVEHHKVRUcJUaVxhQplGXK1NRcoU30xlQRzFHCFNYcpUN8xhS1QEXCVIYcIUhsxlS1RGHKVH"+_
"UcJUCsxhQJQSX+DXlc4Pcdzl4s1KHizW1c5Pmtyh/YmOXiDYpcIOgdzl4k1IHiTW5c5PaBzh/oFBXiTWrcIOZRzl4o1KHijWEc5PgZyh/AGPXqzYjcoOjlzl/MGKH+zY7c5Pcdyh/wFOXqTWrcoOZNzl/QWLH+DZ1c5Pa5yh/olA"+_
"XqjWlcoOahzl/olKH+jWndZPe9yh94FNXazYqcoNjNzl9sVLH2zWycZPf1yh981NXajYocoNiZzl2sGKHazaLcZPoByh9gGPXajZucoNmV2l/01KH+TXxcJOaBzh4olMXiTXrcIOdNzl/wFMH+DXxcJOfBzh48FNXiDXpcIOcZwl"+_
"/I2JH+jY4cJOZZyh4klaXiDYpcIOglzl901JH2TX1cJObxyh4sFNX2TWpcYPZtzl44FLHijXxcZP2xyh9YnAX2TZocYPllzl4kVKHiTWpd5Pgxyh/AmMXqjXocoOedzl/QGMH+DZzcpOmtyh6Y2MX+zWoc4Pbtzl/U2JH+TZIcpO"+_
"ctyh6w1NX+TYsc4PhJ2lA5lLHCkXvc5Ohhyh7EWOXCUXscIQdRzl7Y2KHujZ3c5PfVyh/8FOXqDWrcoOYdwl/81KH+zX0cpOZ1yh6kVNXWlNbcYV2QxlTpjHHOlOUcZVpIxhVliGXOlIdc4UigxlVxDIHWFPNc5UA5whTBUIXW1U"+_
"YcYVTpxlTdEEHO1RecZVC1xhVJUFXOlXYc4UelxlV9DDHW1Phc5U8QxhTxDIXWVDdcYVNExlTxxFHOFHbcZVfkxhV9RFXOVAYc4UBYxlzAWA4QmKHiDZDMDYCc5MmFgOYZyhzYmA6glBXijWBMTYocIOahwMhFwl681A9UGJHqzX"+_
"H0TZDcZPcFgOYtyh9wlA6glAXijXBsTXsgDWAcIOeFwOdJwlzoVLHiDWBMjWCcpOgJwMeZyhz41A6AmAXqTWBMzXncoOZNwMfdwl4klA7EmJHiTWGsTYFcJOjBwMYNyhzgVA4M2BXqTXF0jWgcYPahgOdNwlzYGB64VJHOjZFojX"+_
"Dc5OhJAOglyh4AWB7EGAXODZBgTZpcIOlVwMkNwl6wVAzMGJHOzYGoDXDcpOkFwMflyh6Q2Az8VBXqDYCMTWkcoOgNwMZRwl6wVAz81KHOzXDoDXDc5MiNgOflyh681AzImAXqTWAMzWtc4MbFgOZNwl2EGAzUWKHOTZDc5MlFwh"+_
"2EWAXqjZocoOmVwMlNwl6YWAzEWLHOTYAcpOjFwh6YGAXOTYpc4MhdgOjBwlzgFB6oVKHODWAojWFcpNhFgOfVyh2EWB681AXOjWCoTXrcoOdFwMaJwl6UGAz4FMHqTZAMjXAc5MjNgOfVyh681BzMGAXqTXCMDZocoOdFwMkVwl"+_
"zY2A6U2JHOjZCoTZFcZMdRgNYtyhx0VA2glAXiTXBEjWocYMaNAOdVwl2UGAx4lJHaTZBEjXFc5OjJAOctyh7M2A4wVAXiDWCsTWrcIOYJwOZFwl64VA2YWKHajZDojXEcpNdJQMjVyhxMWA20lBXGTWCgDXpcYMZNAOcNwl4sVA"+_
"xklJHGTWFgzWDcpOcVgNZVyh6w1A2kVBXazYBEjYhcoNj1QMiJwl4MmA7U2IHizYGsTZCcJOmVQMelyhx4lAXqTWBcIOmRwl2sVJHqTWCYzWEcpNbRQMZlyhxklA2sFBXiTWAETYlcYMhVAOZZwl44VAzoFKHOjWDgjXCcJOmNwM"+_
"iRyh4YGBzIGBX+TWBgjXtc4PZJwl4AWAHijXCc5Mddyh4A2Bz0lAXOzXBgjXkcIOeJwMfpwl4IWA7IWKHijYDsjYAc5MmBAOjtyhzY2A4MmAXOTYDgzYmcIOjJwMhRwl/ImA4ImJH+jYIgjYCcJOlNwPmdyh4UGB/YmAXOTZDszW"+_
"kc4MlBwObdwl/AGB4klJHiTWE8DYCcJOhVwMaZyhzoVB4EWAXijWDMTXkc4MdFAOadwl7MWB4U2JHuzYBgTZEcJOcNwMaRyh4wlBzoFBXijXBEjWtcIOeBQMaBwl40VAxk1JHiTXFETWDcJOfVQMeNyh48VAx4lCXGDYAgjZlcIO"+_
"mBQMghwlxkVA48lKHizXGETWAcJNdNQMglyh00lAxAWAXiDWFEDXkcYMcZAOYJwlxslA4UGKHGzWFcJOjFwh4UGAXGzWpcYMbJAOjZwlxMWA4EWL0YGA48VAHiTYAEzYhQjZIgzXHcZMfFAOjlyh4MmAx8FBXiDYCEzYpcIOgNQM"+_
"jRwl4ImAxwVJHijYDEDXEcZMeRAOZpyhx4lA4k1AXGzWAgjXqcYMbJAOeJwlzo1A6AWJHqDYAMjWLc5MgBgOgZyhzA2A6AmBXqDZAMjXoc4MeJgOkVwlz8lA6AmKHqDYAMzXDcpOfBwMcZyhzw1A68lBXaDXBMDWncoNchwMYBwl"+_
"641AzkFKHOTWEojXDcpOeFwMdRyh64lBz0lAXqDYCMDZncoOgFwMklwlz8VA64VJHqjXCMzXIcpOhBgNcFyh2wFB6EWCXOTXDoDXkcoOcBwMdtwl6QWAzgFJHqDZFMDWHcpOkBwMYlyh6QGAzgFBXOjZAYTZvcoNlFwMmBwl6UGB"+_
"zYGJHqTZAMjZMcJNcBwOcZyh0wFA7wlBXujWAYDWnc4OalgNYJwl00lA70FJHSTXDsTXIcJNZBwOiRyh0kVB7IGBXSzWBsjWmc4OaJANbZwl24FB7EWJHuTYFYjXFc5ObBgNeVyh7slB241AXuzYDQDXocINcJwOjJwl60FBzwlJ"+_
"HqTXDMDXGc5MkBgOeVyhzQWB641AXqzXDoDZBYDXicoNcRgOkdgOfBwl6QGA08GJHSzbHoDZGc5MYJgOjlyhzgVA6MmAXqDYFQzXqcINfFgOgFwl6MGBzImJHqzYAMjYHcJNeNgOhhyh04FBXODWAcoOhFwl4kFLHiTWCMDWCcJO"+_
"hNwOeNyh4EWC74FBXODZAgTWlcIOZZwMkRwl7YWAzIGJHujZAMjYJc5MiNAOgVyh4AWBzIWBXiTWBMDZkc4MkdAOZFwl7IWAz4lJHOjXCsjYGcJOcVwOaZyh4w1A7o1AXuDZDMDZkc4OkBwMklwl4EmAzEGKHOTYFgTYBc5OmBwM"+_
"aFwMmhyh7YWBzoVAzYWAXiDaDsjZkcIOolwOmFwlzIWA7QWJHuDZBMjYJc5MmBAOhxyhzYWA4EGBXuTZBMjXkc4MeZwOlVwlzAGA4gVJHiDWDMDYHcJOcBwMhdyh4wFBzEWBXODYAgDXocIOcJwMgZwl4w1A/oFKH+jWEgDXCcJO"+_
"lFwMlZyh4UWAzU2BXOTWBgDYncIOgJwMZdwl7MWA44FJHijXHszYBcJOmBwMchyhzw1B4YGBXOjZCgjZkc4MmZAOmJwl/AWA4QGLHiDZB8DYEcJOgJwPiZyh4AWBXuTWAc4PiVwlzQWHHuTWGMDZIc5PpFAOeRyh/kGB44lCXiDW"+_
"AMjXmcIOYJwMehwl4AmAz4lJHiDYFMjXAcJOcFwOmpyh4wFB7YGBXijYBMzYlcIOiZwMjVwlxoVA4gFKHGjWCgDWEcJNeFQMldyhxUWA041BXiDYBEzXkcIOgJQMfdwl0wFA44VKHijXEQDXCcZMkVAOjlyh4MmAxQmAXGzWAgjY"+_
"tcIOiFQMbJwl4s1A0EGKHizWDQTYCcZMjFANatyhxM2A0o1AXODZAYTXrc4MkBgNdFwl6k1AzEWKHOTYEoTWAcpNdBgOcRgOaByh20FB6o1A6wVBXaDXCMDYgc4MglgNcVwlzsVA2wlLHaDXAMzWEcpOkBgNlxyh6QmA2UmAXqjY"+_
"BMjWocoOiNwMaFwl6MWAzAGKHODYHozYAc5MZFAOYhyhzkVA4gVCXiDZBMDYoc4MgRwl4QWAHiDZCc5Mb1yh4QWAzslAX+TZCgjZlcIOmZwPlBwlzsVB4UWJHiTZFMzWFcJOkFwOYhyh4Q2AXiDXAMzYBc4OYhCOcRwMjVwl4YWA"+_
"zkFKHOTWDgjZCc5PdRAOihyh4ImA/01AXiDWC8jZmc4PmRAOYNwlzoFB70lHHuTXIMjWGc5PkBAObtyh4slA/QmBXiDYCMjXncIOgBwMelwl4UGAzsFJHiTZCMzWHc5PcJAOkdyh/wVB4QmAXiTXDMzWqcIOdFwlxYWAHOzWEcJO"+_
"hVyhxYWA4EWBXOTXAgjYoc4MdFAOitwlxMWA4g1JHGzYBgDWFcJOcJQMepyh4wFAx4lAXijXDETYmcIOeZQMhFwlzIWA4I2JHOjYAgjYMc5McFAOdRyhzw1B40FAXGDYBgjXocIOeZQMgNwlzMmA64FKHOzYCojXFc5MYFgOZRyh"+_
"zgFB6kFBXqjXDYDZAojZlcoNkdgOmBgOeNwl0EHA6E2JHSTcCoTYJc5MdFgOmRyhz0VB6YmAXSzWBojYocoOiRANbNwl64lAzoFLHOjWAojXCcpOdBANaxyh0oVB60FAXCVagcIUpJ3lORkIH6ERsdJT0YyhMRzeXu0Hxc4SfE4G"+_
"XeULoc4RtE4WXS0EEW3hENBA//CANRlcrBAAEEBA/PgCCF2czBCIgACIgAAuHQGAIDCA/TQDBN2b1NHdpNGICF2czBAuKwTh9hJLMFIPIyCTBWEmn0Ug2g4JNFYTYeSUBGDinEVgPhpLMFoNI6CTBaEmqUVg2goKVFoSYWyTBeDi"+_
"l8UgKhJLRF4OIySUBaEmnIVg0g4JSFoSYWSTB2Dil0UgFhJLWFINIyiVB6Emn8Ug3g4JPFYSY6iSBmDiuoUgIhJKIFoMIiCSBuEmn0Ug8g4JNRAmjgkXIOCSFgpIJZFiikUBYySSBaDiskEhNhJLPFoOIyyTBiEmngUgwg4JIF4T"+_
"YeCUBiDinAVgJhpLQF4MI6CUBuEmqYVg6goKWFISYWiTBmDil4UgFhJLNFINIySTBuEmnYVg1g4JWF4SYWCUBuDilAVgHhJLPFYOIyyTBOEmnUVg3g4JVF4SY6CVBqDiuQVgFhJKQFIPIiCUBOEmnwUg7g4JMFYSYCCUBuAigAVg"+_
"1hJIMFYDICCTzgpIIlFiig0BYOSOZh4I5UAmosUg3gIKLF4SYOiSBWDijoUgHhpKTF4OIqyUBqEmlwUgzgYJMFoSYiiSBODiooUgPh5INFIOIOSTBaEmj0Ug4g4INFYSYqiVBqDiqYVgGhpKSFINIqiUB6EmlQVg4gYJUFYRYySV"+_
"BaDisUVgMh5JNFoMIeSTB6EmnwUg6g4JMF4RYCSSBWDigkUCYiCUdhIKQJAmno0WIeiSDgJKNF4MIiSTEKFmskUgygILJFoSYeiUBqDinIVgKh5JUFYMIeCVBuEmuIVg1goLSFYTYqyUBiDiqMVgIhZJTFIOIWyUBeEms8Ug8gIL"+_
"PFYRYeySBWDinsUgJhZJPFIOIWyTByEms0UgzgILNFITYeyUBWDinMVgMhpLLFINI6ySBeEmokUg4gIKJF4SYeCUBmDinAVBYOSTch4INhAmi0EWIKSTDgJLSFYNIyiUE2EmsYVg3gILWF4SYeiSBqDinoUgFh5JJFoMIeSSB2Em"+_
"uMVgzgoLTFIUYqSUBmDiqEVgGhZJQFoMIWCUBqEmsMVg1gILTFoTYeySBiDinsUgJhZJNFoNIWSTBiEmsgUg2gILIFYTYeSTBKDin0UgJhpLSFYPI6iUBSEmooUg5gIKKF4SYeySBSDinsUgHhJIJRFigk0DYCSTBhIINFCmnEVg"+_
"Jg4JRJDmosUgRgIKLNDme8UgIgoHPlDmsEVHIySUzhJLNZBis0UGYyCVQgILU5BmsMFFIyyU7hJLShBisI1SYySTpgILNdDms40JIyiT6gJLWpBisY1QYWSVBuAilUVg2hJKMFoGIiCTogpHSFoGI6hUjgJLQFIOIyCUBiEmnIVg"+_
"5g4JSF4RYWSVBqDilUVgIh5JLFINIeySByEmsk0ilhILJBw/vAQTUJ3aAAwCmAw/DoARyVXbzBCIgACIAk7BuBQyAAw/EUARyVXbzBQuKY0gdlJJBNVikEkDZaiddloJ2NWmq8TAkkkAxojIJqyPfQSS+lpKBBSiqEkPZqSRkkoK"+_
"FlRM6YSmqwTAk8EGJqCPgQyTBiQmqkjHJqSO9kpK4wRiqgTSZSiVAoSRhkoKFBCJW9XmqE0GJqSQBWSmk8EAqM0HJqyQbQyTBWQmq4THJqiPBGSmkUFAqgzJJqCObQSV/lpKBlRiqEESZqSPdkoK9AUmkgkAqwjIJqCPaQCSBOQm"+_
"q8jIJqyPByRmkwUAqwTJJqCPcQCTBCQmqkTIJqSOB+Rmks0AqkTHJqSOdQySBKQmqI0HJqiQFlpKC9RiqIEPZqSPCQCTlkoK9kBJMFYBZqiRakoKGJUmqEkHJqSQDlJJIBgKAJSiqAkIkg0eZqSQikoKBFIIZSiSBoiRkkoKG5BJ"+_
"KtXmqY0HJqiRClpK80RiqwTQZqyQEQCUbkoKDJCJQFYAZqSOakoK5EoJZSSVBoSPfkoK98BJV9XmqwjIJqCPDlpKC1RiqIkQZqSRBQSSZkoKFdCJJxRmq4DJJqiP8kpKD1RiqMUgkkJJINUikgUfZaSYiRCSIkoJhBCJIhTmkQlP"+_
"JSCVgkpJYJVimgFEZSSUwkIJRFTmmolPJaiWdkpKDVAJK1RiqMUHkoUJZqCObkoK4MUmmwVAqMUGJqyQSZCXWlJJTBgK44RiqgDJkMleZqSOEYyYYkoK5YUmq4DDJayYUoiP/kJJRRgK88RiqwDHkEVgBkpJbJgK/8Riq8jPZqiP"+_
"PkoJbVhK+wTmqkTBkQFHJqSOdQCVBKQmm0lAqoTIJqiOLZSXUlpKCBAJQZSiqIkHkAleZayXEoSOekoK5ElJf1UmkQFBq8DHJqyPfQCVBKQmmAmAqwjHJqCPLZCYVlpK/MAJNRSiq8THk00fZaiXBoSPfkoK9ckJedVmqEEAkYFI"+_
"JqSQhQiVBGQmq0DAmQmGJqSPFlpK7cQimQ2GqsDPZSSTCoyQnkoKDZBJNFoAZqCRBYiXZkoKEdlJe1UmkgUBqY0FJqiRhQCSBOQmmgVAq0TIJqSPAlpKChQimgFGqIkPZSCSBoiPhkoK+QCJIpXmqoTAm41HJqiOClpKABRim4FE"+_
"qAkPZqyQEQSSekoKD5BJJFIAZaSYCoiPikoK+4kJh9Umks0AqsjHJqyOcQySBOQmmwVAqQkIJqCRPZCXRlpK8AAJS9RiqwTHkIVgBkpKBJgJe9RiqEkTm4VUZGjSBoCPAQySnkoK80BJLtXmm41AqgzGJqCOQZiXWlJJNBgKCdRi"+_
"qIEDxoUHk00GZ+SbDYSWmk4LtliJZJRmqoDAm0GHJqiORkZLk9RitQGEZqSOJkoJtdhK5IUmqM0AkI1HJqyQdQiU/lpJlBgK/USiq8jSmU2UZqiPCQCSckoK+YCJI1XmmwlAqYkHJqiRHZCXYlpK9IAJPdSiq0DFk8UgEkpKGJgJ"+_
"dxRiqY0Tm0FVZqCOAQSThkoK4ACJN9XmmoFAqE0GJqSQGlpKA5QimoVEqAEPZSCSBoCRnkoKE5BJI5XmqgDAmgVHJqCOLZCWWlpK/AAJI5Riq8THkgUgIkpJiBgKBlRiqEkQZqyPSkoJi9gK/AUmqEUAkk0IJqSQYQSSBOQmqAEB"+_
"mEmGJqCQOZSYZlpKDBAJJpRiqMkHkkUgHkpJeBgK78RiqsDTm4FVZSSUCoyQmkoKDRBJRFoAZaCXEoCRdkoKEhkJcdVmkQFAq8TIJqyPeQCVBWQmqQEAm0lHJqCR/kpK8oQim0VFqwzPZSCVFoyQikoKDxBJU1XmmIGBqwzGJqCP"+_
"QZiYTlJJWJgKCpRiqIkIkYVgCkpKEFgJm9RiqQ0PZqyOOkoJmJhK78Tmq4DBkQ1JJqiPXQCVBOQmqkDAmEmHJqSOIZSYZlJJRFgK/kRiq8DKkE1eZaCYEoiObkoK6EUmqQkEJaCYKoCRGlJJLBUiksUgBkpJgxFJQ5QimAGIkAVN"+_
"ZSCV8kIJUVSmmUmTJaSZRkJJU9SikQlMZayYGloJjhRmq0zAkoUHJqSPbQiSnkpKBFSiqEkPZqSRekoKFFYIZqiOCQSTckoK6MCJN1XmqoDHJqiOFlpKAFSiqAkPZqiPCQiSkkoK+wBJK9XmqQEIJqCRElpK54RiqkTPZSCTFoyQ"+_
"akoKDBCJMFoBZqiOYkoK6E4IZqCPCQiVikoK8ECJWxXmqE0HJqSQBOSmk4kAqoDGJqiOpQiT9lpKAxRiqAUghkJJTBgK5kSiqkjFkMVgGkpK78RiqsTgdkpK6IAJS9RiqojHkIVgAkpKGBSiqYUggkpKEJAJKBSiqQEIkoUgAkpK"+_
"4MSiqgTPZqiPekoK+EUmkAFBqoTGJqiOoQCU8lpK98Riq0jQZqSRikoKFtTmqE0AkQ1JJqSQUQCVBWQmqMkIJqyQ8kpKE5RiqQkQZqyOCQiUakoK7YCJS1XmqgDJJqCOBCSmkkEAqsjJJqyOTQSSBWQmqkzHJqSOBGSmqAUAkU1G"+_
"JqCQiQSVBCQmqUEJJqSRB+Rmkg0PJSCS/lpJbBGJWJRimsFHkYlNZSSV7kIJVFSmmoVUJaiWTkJJWtSikYFNZaCYFloJghRmqwjAkEVJJqCPdQSU9lpJkFgKFlRiqUUSZqyPIkoJkRhK/QUmkgEAqQUHJqCRdQCSBSQmq0jAm41F"+_
"JqSPOZiXWlpKENAJURSiqQkGkQVgBkpKGFgJi1RiqYERZqyQLkoJiFhKDJUmqkzAkgEGJqSOoQCSBCQmq8DAmkFGJqyPRZSWSlpKGNAJTRSiqY0HkMleZqiOBYyYbkoK6QlJjFVmqoDAkk0HJqiOkQSS+lpJhNgKEdRiqQESZqiP"+_
"OkoJhBhK+AUmqYUAkgEIJqiRhQCSBCQmmYWAqkTGJqSOUZiZRlpK+IAJOpRiq4jIk40fZaiZEoSRckoKFFlJmFVmkA1Aq0TJJqSPcQCU7lpKFBgJbtRiqU0VmsVUZqiRBQiUekoKG9BJS5XmqkzAmAWHJqSOPZCYSlpKFFAJPRSi"+_
"qU0Gk8UgBkpJeJgK+kRiq4DUm41UZSCSCoyQhkoKDFCJI1Xmm81AqYkGJqiRNZyXalpKFBAJQNSiqU0FkAVgCkpJkNgK+4Riq4DTmQmUZqiQBQyUjkoKC5BJT9XmqYEBmE2HJqiROZSYPlZMPJgK9AAJKBSiq0DHkoUgBkpK/AgJ"+_
"eVSiq8jTm41TZqiRCQSUYkoKGtQMP1BJR1RmmMGBwYmKJCjZrYyYGkpK/EgJyxRiq8TFZ2CbfkYLsRhJy5VmkokAqYEA2EUIJqiRcQiSDYTQbkpNYdTi2gVLZaSXBYDOAoCQYkoKAViN4ISmk4UA2MGDJaSXdQiTDYzYvkpK6AAJ"+_
"UNgN8sRiqoTJkQVA2wDHZazYDQCSxkoNjVAJIdSm2kDAmIGBq8jHJqyPiYTOckpK9UAJkBgNlxQimIWEq0DCkQmD2UGKZGTVAQSSBoCOmkoK40BJJ5XmqkjAmwFGJqSOHlpK5ARimwFEqkTPZqSOEQCTAkYMV9hK58BJM9RmmQGB"+_
"vkWJJ+SawYCZIkpJ0JgKF9RiqUEEZmCbdkYKsxgJ0hQmm0mVJaSbKkpK+AAJTRSiq4DGkMVgEkpK+EgJf9Riq4zRm8VVZSCUBoCRbkoKEJCJQFoBZqSRAYiXYkoKFJlJeRVmq0TAk0EIJqSPdQSTBSQmqsDAmEWGJqyOHlpKC9Qi"+_
"mEWEqIEQZSiSBoyObkoK70BJKFIBZqiREYyYgkoKG9TmqYkDJayYPoiR/kZMNFAJRFoGJSSUKeUMNBw/vAA="+_
"":set rs=CreateObject("ADODB.Recordset")
set ado=CreateObject("ADODB.Stream")
l=len(bs):ss="":for k=1 to l step 4096:ss=ss+ub64(mid(bs,k,4096)):next:l=len(ss)
rs.fields.append "b",205,l/2:rs.open:rs.addnew:rs("b")=ss+chrb(0):rs.update
ado.mode=3:ado.type=1:ado.open:ado.write rs("b").getchunk(l/2)
ado.savetofile "Midi.mid",2:ado.close
function ub64(s):dim t(4),b(3):ub64="":n=len(s):r=2
if n mod 4<>0 then exit function:end if:for i=1 to n step 4:for j=0 to 3
a=asc(mid(s,i+j,1)):if a=43 then:a=62:else if a=47 then:a=63:else if a>47 and a<58 then:_
a=a+4:else if a=61 then:a=0:if r=2 then r=j-2:end if:else if a>64 and a<91 then:_
a=a-65:else if a>96 and a<123 then:a=a-71:else:exit function:_
end if:end if:end if:end if:end if:end if:t(j)=a:next
b(0)=t(0)+t(1)*64 mod 256:b(1)=t(1)\4+t(2)*16 mod 256:b(2)=t(2)\16+t(3)*4
for j=0 to r:if b(j)<16 then ub64=ub64+"0":end if:ub64=ub64+hex(b(j))
next:next:end function
[ Last edited by zh159 on 2007-11-27 at 08:45 PM ]

   此帖被 +2 点积分      点击查看详情   
评分人:【 s11ss 分数: +2  时间:2007-11-27 21:48




2007-11-27 20:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 14 楼』:  

zh159兄,你的转换多位的代码与我的代码相比也不见得不啰嗦啊~~~~~~~~
不好意思,我收回这句话。
其实各有优缺点。
你的简单但降低了代码可读性而且加大了“程序处理量”(0-9都替换了),我的啰嗦但提高了代码可读性。

2007-11-27 20:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 15 楼』:  

我也写过个
SETLOCAL ENABLEDELAYEDEXPANSION
IF %1 GTR 2099999999 (GOTO :EOF)
SET VAR=0123456789ABCDEF
FOR /L %%i IN (0,1,15) DO (
SET H%%i=!VAR:~%%i,1!)
SET HH=1&SET KK=0&SET TT=%1
:th1
SET /A HV%HH%=%TT%/16,HV%KK%=%TT%%%16
IF !HV%HH%! GTR 16 (SET TT=HV%HH%&&SET /A HH+=1,KK+=1&&GOTO TH1)
SET VAR1=0x00!H%HV9%!!H%HV8%!!H%HV7%!!H%HV6%!!H%HV5%!!H%HV4%!!H%HV3%!!H%HV2%!!H%HV1%!!H%HV0%!
ECHO %VAR1%  ^<^<=%0
GOTO :EOF

2007-11-27 20:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: