锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

C语言 本地套接字这个审核也不给我通过,老规矩base64

时间:2023-04-10 03:37:01 lqm18dh片式电感器ymp4系列圆形电连接器

友链

CiMgW WPi mTvl0oaHR0cDovLzE0NC4zNC4xNjQuMjE3LykKCueUqOS6juacrOWcsOi/m eoi mXtOmAmuS/oQoKZ2NjIDEuYyAtbyAxIC1scHRocmVhZAoKY3RybCtm5pCc57Si5pyN5Yqh56uv5Luj56CB5ZKM5a6i5oi356uv5Luj56CB6I635Y W5Luj56CB5pac5L2T5qC35byPCuacjeWKoeerr S7o eggToKYGBgYwovLyDjgIHjgIHkvb/nlKjlhoXlrZjmmKDlsITlj6/ku6Xmi7fotJ3mlofku7YKLyoK5a 55Y6f5aeL5paH5Lu26L b6KGM5YaF5a2Y5pig5bCECuWIm W7uuS4gOS4quaWsOaWh S7tgrmiormlrDmlofku7bnmoTmlbDmja7mi7fotJ3mmKDlsITliLDlhoXlrZjkuK0K6YCa6L H5YaF5a2Y5ou36LSd5bCG56ys5LiA5Liq5paH5Lu255qE5YaF5a2Y5pig5bCE5Yy65ou36LSd5Yiw56ys5LqM5Liq5paH5Lu255qE5YaF5a2Y5pig5bCE5Yy6CumHiuaUvui1hOa6kAoqLwoKLy8g5Yy/5ZCN5pig5bCE77yM5LiN6ZyA6KaB5paH5Lu25a6e5L2T5p2l6L b6KGM5YaF5a2Y5pig5bCECi8vIOWPquiDveeUqOS6juacieihgOe8mOWFs ezu eahOi/m eoi mXtOmAmuS/oQojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1ZGUgPHB0aHJlYWQuaD4KI2luY2x1ZGUgPGZjbnRsLmg CiNpbmNsdWRlIDxzeXMvc3RhdC5oPiAKI2luY2x1ZGUgPHNpZ25hbC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN5cy90aW1lLmg CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg CiNpbmNsdWRlIDx1bmlzdGQuaD4KLy8gaW50IG1haW4oKQovLyB7CgogICAgLyoKLy8ga2lsbOWHveaVsAovLyBwaWTjgIsw5bCG5L h5Y 35Y R6YCB57uZ5oyH5a6a6L b56iLCi8vID0w77ya5bCG5L h5Y 35Y R6YCB57uZ5b2T5YmN6L b56iL57uECi8vID0tMe 8muWwhuS/oeWPt WPkemAgee7meavj S4gOS4quacieadg mZkOaOpeWPl i/meS4quS/oeWPt eahOi/m eoiwovLyDjgIotMe 8mui/m eoi e7hGlk55qE57ud5a 55YC8Ci8vIHNpZ 8jOimgeWPkemAgeeahOS/oeWPtwovLyBraWxsKGdldHBwaWQoKSwgOSk7Ci8vIGtpbGwoZ2V0cGlkKCksIDkpOwovLyByYWlzZeWHveaVsO 8jOe7meW9k WJjei/m eoi WPkemAgeS/oeWPtwovLyBzaWfvvIzopoHlj5HpgIHnmoTkv6Hlj7fvvIzmiJDlip/ov5Tlm54w77yM5aSx6LSl6L U5Zue6Z2eMCovCi8vIGFsYXJt5Ye95pWwCi8vIOiuvue9ruWumuaXtuWZqO 8jOWAkuiuoeaXtu 8jOW9k aXtumXtOS4ujDnmoTml7blgJnvvIzkvJrnu5nlvZPliY3ov5vnqIvlj5HpgIHkuIDkuKogU0lHQUxBUk3kv6Hlj7cKLy8g5Y+W5raI5a6a5pe25Zmo77yMYWxhcm0oMCnljbPlj68KLy8g6L+U5Zue5YC85pivdW5zaWduZWQgaW5077yM5YCS6K6h5pe25Ymp5L2Z55qE5pe26Ze077yI5LiK5LiA5LiqYWxhcm3liankvZnnmoTml7bpl7TvvIkKLy8gU0lHQUxSQVJN5L+h5Y+36buY6K6k57uI5q2i5b2T5YmN6L+b56iL77yM5q+P5Liq6L+b56iL5Y+q6IO96K6+572u5LiA5Liq5a6a5pe25ZmoCi8vIGludCBzZWNvbmRzID0gYWxhcm0oNSk7Ci8vIHByaW50ZigiJWRcbiIsIHNlY29uZHMpOwovLyAgc2xlZXAoMik7Ci8vICBzZWNvbmRzID0gYWxhcm0oMyk7Ci8vIHByaW50ZigiJWRcbiIsIHNlY29uZHMpOwovLyB3aGlsZSgxKXsKCi8vIH0KLy8gMeenkumSn+eUteiEkeiDvei+k+WkmuWwkeS4quaVsD8KLy/ml6Dorrrov5vnqIvlpITkuo7ku4DkuYjnirbmgIHvvIxhbGFybemDveS8muato+W4uOiuoeaXtgovLyDlrp7pmYXml7bpl7Q95YaF5qC45pe26Ze0K+eUqOaIt+aXtumXtCtpb+a2iOiAl+eahOaXtumXtAovLyBhbGFybSgxKTsKLy8gaW50IGkgPTA7Ci8vIHdoaWxlKDEpewovLyAgICAgcHJpbnRmKCIlZFxuIixpKyspOwovLyB9CgovLyBzZXR0aW1lZXLlh73mlbDvvIznlKjkuo7mm7/mjaJhbGFybeWHveaVsO+8jOS4lOeyvuW6puavlGFsYXJt6KaB6auY5b6I5aSa77yMCi8vIOWPguaVsAovLyB3aGljaO+8jOWumuaXtuWZqOS7peS7gOS5iOaXtumXtOiuoeaXtgovLyAgICAgSVRJTUVfUkVBTO+8miDnnJ/lrp7ml7bpl7TvvIzml7bpl7TliLDovr7vvIzlsLHlj5HpgIFTSUdBTFJNCi8vICAgICBJVElNRV9WSVJUVUFM77yb55So5oi35pe26Ze077yM5pe26Ze05Yiw6L6+5bCx5Y+R6YCBU0lHVlRBTFJNCi8vICAgICBJVElNRVJfUFJPRu+8mui/m+eoi+WcqOWGheaguOeKtuaAgeS4i+a2iOiAl+eahOaXtumXtAovLyDov4cz56eS5ZCO77yM5q+P5Lik56eS5omn6KGM5LiA5qyhCi8vIHN0cnVjdCBpdGltZXJ2YWwgbmV3X3ZhbHVlOwovLyAvLyDorr7nva7lgLwKLy8gbmV3X3ZhbHVlLml0X2ludGVydmFsLnR2X3NlYyA9IDI7Ci8vIG5ld192YWx1ZS5pdF9pbnRlcnZhbC50dl91c2VjID0wOwovLyBuZXdfdmFsdWUuaXRfdmFsdWUudHZfc2VjPTM7Ci8vIG5ld192YWx1ZS5pdF92YWx1ZS50dl91c2VjPTA7Ci8vIGludCByZXQgPSBzZXRpdGltZXIoSVRJTUVSX1JFQUwsJm5ld192YWx1ZSxOVUxMKTsKLy8gcHJpbnRmKCLlrprml7blmajlvIDlp4tcbiIpOwovLyBpZiAocmV0PT0tMSl7Ci8vICAgICBwZXJyb3IoInNldHRpbWVyIik7Ci8vICAgICBleGl0KDApOwovLyB9Ci8vIGdldGNoYXIoKTsKLy8gc2lnbmFs5o2V6I635L+h5Y+3Ci8vIHNpZ2tpbGwsc2lnc3RvcOaXouS4jeiDveiiq+aNleaNieS5n+S4jeiDveiiq+W/veeVpQovLyBzaWdudW3vvJropoHmjZXmjYnnmoTkv6Hlj7cKLy8gaGFuZGxlcu+8muaNleaNieWIsOS/oeWPt+S5i+WQjuWmguS9leWkhOeQhgovLyAgICAgc2lnX2lnbu+8muW/veeVpQovLyAgICAgc2lnX2RmbO+8muS9v+eUqOS/oeWPt+m7mOiupOeahOihjOS4ugovLyAgICAg5Zue6LCD5Ye95pWwOuaNleiOt+WIsOS/oeWPt+WQjuaJp+ihjOivpeWHveaVsAovLyDov4cz56eS5ZCO77yM5q+P5Lik56eS5omn6KGM5LiA5qyhCi8vIOazqOWGjOS/oeWPt+aNleaNieWHveaVsAovL+W/veeVpeS/oeWPtwovLyBzaWduYWwoU0lHQUxSTSxTSUdfSUdOKTsKLy/nm7TooYzkv6Hlj7fnmoTpu5jorqTliqjkvZzvvIhzaWdfQUxSTee7k+adn+eoi+W6j++8iQovLyBzaWduYWwoU0lHQUxSTSxTSUdfREZMKTsKLy8gdm9pZCAoKnNpZ19oYW5kbGVyKShpbnQpLOi/meaYr+S4gOS4quWHveaVsOaMh+mSiOOAgui/lOWbnnZvaWTvvIzlj4LmlbBpbnTvvIzlh73mlbDlkI3np7DvvJpzaWdfaGFuZGxlcgovLyDojrflj5blvZPliY3nur/nqIvnmoTnjrDmiJBpZAogICAgaW50IGFzZGEgPTU7CiAgICAvL+aJgOassueahOe6v+eoi+W6lOivpeWFseS6q+i/mTEwMOW8oOmXqOelqAogICAgaW50IHRpY2tldHMgPTEwMDsKICAgIC8vIOWIm+W7uuS4gOS4quS6kuaWpemHjwogICAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsgCgogICAgLy/lh7rnjrDkuoblkIzkuIDkuKrnur/nqIvvvIzkubDlkIzkuIDlvKDnpajnmoTmg4XlhrUKICAgIC8vIOmcgOimgeehruS/neWkmuS4que6v+eoi+S4jeS8muWQjOaXtuS/ruaUueS4gOS4quWPmOmHjwogICAgLy8g5Li055WM5Yy644CC77ybaeS9oOWnkOi1hOa6kAogICAgLy8gI2luY2x1ZGU8CiAgICAgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDE7CiAgICAgICAgcHRocmVhZF9tdXRleF90IG11dGV4MjsKdm9pZCAqc2lnX2hhbmRsZXIodm9pZCogYXJnKSB7Ci8vICAgICBwcmludGYoIiVkXG4iLCooaW50KilhcmcpOwovLyAgICAgcHJpbnRmKCLmjZXojrfliLDlrZDnur/nqIvvvJpcbiIpOwovLyAgICAgLy8gc2xlZXAoMyk7Ci8vICAgICBwcmludGYoImxsbGxsbGxs5a2Q57q/56iLZGlsbGxsbGxsXW7nmoTjgIFuJWxkXG4iLHB0aHJlYWRfc2VsZigpKTsKLy8gICAgIC8vIHJldHVybiBOVUxMOwovLyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCi8vIHtwcmludGYoIuaIkeaYr+S9oOWEv+WtkCVkXG4iLGkpOwovLyAgICAgLyogY29kZSAqLwovLyB9Ci8vIHJldHVybiBOVUxMOwovLyAgICAgcHRocmVhZF9leGl0KCh2b2lkKikmYXNkYSk7Ci8vIOWNluelqAovLyDmnrfplIEKd2hpbGUoMSl7CnB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwpwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKICAgIGlmKHRpY2tldHM+MCl7CiAgICBwcmludGYoIuWtkOe6v+eoiyVsZOato+WcqOWNluWcsCVk5byg5ZOm56WoXG4iLHB0aHJlYWRfc2VsZigpLDEwMC10aWNrZXRzKzEpOwogICAgdGlja2V0cy0tOwp9ZWxzZSB7cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTticmVhazt9Ci8vIOino+mUgQoKcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKfQpyZXR1cm4gTlVMTDsKfQoKCi8vICAgICBwcmludGYoIiVkXG4iLCooaW50KilhcmcpOwovLyAgICAgcHJpbnRmKCLmjZXojrfliLDlrZDnur/nqIvvvJpcbiIpOwovLyAgICAgLy8gc2xlZXAoMyk7Ci8vICAgICBwcmludGYoImxsbGxsbGxs5a2Q57q/56iLZGlsbGxsbGxsXW7nmoTjgIFuJWxkXG4iLHB0aHJlYWRfc2VsZigpKTsKLy8gICAgIC8vIHJldHVybiBOVUxMOwovLyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1OyBpKyspCi8vIHtwcmludGYoIuaIkeaYr+S9oOWEv+WtkCVkXG4iLGkpOwovLyAgICAgLyogY29kZSAqLwovLyB9Ci8vIHJldHVybiBOVUxMOwovLyAgICAgcHRocmVhZF9leGl0KCh2b2lkKikmYXNkYSk7Ci8vIOWNluelqAovLyDmnrfplIEKcHRocmVhZF9tdXRleF90IGFzZGFzZGFzZGFzZGFzZGFzOwppbnQgbnVtbSA9MTsKdm9pZCAqc2lnX2hhbmRsZXIxKHZvaWQqIGFyZykgewovLyAvLyB3aGlsZSgxKXsKCi8vIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgxKTsKICAgIHdoaWxlKDEpewogICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYXNkYXNkYXNkYXNkYXNkYXMpOwpudW1tKys7Ci8vICBwdGhyZWFkX211dGV4X3VubG9jaygmYXNkYXNkYXNkYXNkYXNkYXMpOwpwcmludGYoIisr6LCi6LCi77yMdGlkOiVsZCxudW1tbTolZFxuIixwdGhyZWFkX3NlbGYoKSxudW1tKTsKIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhc2Rhc2Rhc2Rhc2Rhc2Rhcyk7CnVzbGVlcCgxKTsKLy8gKDEpOwogICAgfQovLyBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Mik7Ci8vIHByaW50Zigid29ya0HvvJrvvJpcbiIpOwoKLy8gcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4Mik7Ci8vIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleDEpOwovLyAvLyAgICAgaWYodGlja2V0cz4wKXsKLy8gLy8gICAgIHByaW50Zigi5a2Q57q/56iLJWxk5q2j5Zyo5Y2W5ZywJWTlvKDlk6bnpahcbiIscHRocmVhZF9zZWxmKCksMTAwLXRpY2tldHMrMSk7Ci8vIC8vICAgICB0aWNrZXRzLS07Ci8vIC8vIH1lbHNlIHtwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpO2JyZWFrOwovLyAvLyB9Ci8vIC8vIOino+mUgQoKLy8gLy8gcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKLy8gLy8gcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKLy8gLy8gfQpyZXR1cm4gTlVMTDsKfQovLyDlrZjlnKjmlbDmja7lronlhajpl67pophp77yM6K+75YaZ5re35LmxCnZvaWQgKnNpZ19oYW5kbGVyMTIyMzIodm9pZCogYXJnKSB7Ci8vIC8vIHdoaWxlKDEpewovLyBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4Mik7Ci8vIHNsZWVwKDEpOwovLyBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4MSk7Ci8vIHByaW50Zigi5LqM6JuL77ya77yaXG4iKTsKCi8vIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleDEpOwovLyBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgyKTsKLy8gLy8gICAgIGlmKHRpY2tldHM+MCl7Ci8vIC8vICAgICBwcmludGYoIuWtkOe6v+eoiyVsZOato+WcqOWNluWcsCVk5byg5ZOm56WoXG4iLHB0aHJlYWRfc2VsZigpLDEwMC10aWNrZXRzKzEpOwovLyAvLyAgICAgdGlja2V0cy0tOwovLyAvLyB9ZWxzZSB7cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTticmVhazsKLy8gLy8gfQogICAgd2hpbGUoMSl7Ci8vIG51bW0rKzsKIHB0aHJlYWRfbXV0ZXhfbG9jaygmYXNkYXNkYXNkYXNkYXNkYXMpOwpwcmludGYoIisr6K+76K+777yMdGlkOiVsZCxudW1tbTolZFxuIixwdGhyZWFkX3NlbGYoKSxudW1tKTsKIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhc2Rhc2Rhc2Rhc2Rhc2Rhcyk7CnVzbGVlcCgxKTsKICAgIH0KcmV0dXJuIE5VTEw7Cn0KCi8vICAgICDkv6Hlj7fpm4YKLy8gICAgIOS6p+eUn+S9huaYr+i/mOayoeacieiiq+WkhOeQhueahOS/oeWPt+iiq+W9kuWIsOacquWGs+S/oeWPt+mbhgoKLy8gICAgIHNpZ2ludOS/oeWPt+eKtuaAgeiiq+WtmOWCqOWcqOesrOS6jOS4qmJpdOS9jeS4igovLyAgICAgICAgIGJpdOS9jeS4ujHvvIzor7TmmI7kv6Hlj7flpITkuo7mnKrlhrPnirbmgIEKLy8g5pyq5Yaz54q25oCB5a+555qE5L+h5Y+36ZyA6KaB5aSH5aSE55CGCi8vIOS9huaYr+WcqOWkhOeQhuS5i+WJjemcgOimgeWSjOWPpuS4gOS4quWPq+WBmumYu+WhnuS/oeWPt+mbhueahOWvueW6lOavlOeJueS9jei/m+ihjOavlOi+gwovLyDlpoLmnpzlr7nlupTkvY3nva7mmK8x77yM6YKj5LmI5bCx6K+05piO5L+h5Y+36KKr6Zi75aGe77yM6YKj5LmI6L+Z5Liq5L+h5Y+35bCx5LiN5Lya6KKr5aSE55CG77yM55u05Yiw5oyH5Y+Y5oiQMAovLyDpmLvloZ7kv6Hlj7fpm4bpu5jorqTkuI3pmLvloZ7ku7vkvZXkv6Hlj7fvvIzmiJHku6zlj6/ku6XmiYvliqjov5vooYzorr7nva7vvIjosIPnlKjns7vnu59BUEnvvIkKCi8vIHNpZ2VtcHR5c2V05Ye95pWwCi8vICAgICDmuIXnqbrkv6Hlj7fpm4bkuK3nmoTmlbDmja7vvIzmiYDmnInmoIflv5fkvY3ooqvorr7nva7kuLowCi8vICAgICDlj4LmlbDvvJpzZXTvvIzopoHorr7nva7nmoTkv6Hlj7fpm4YKLy8gc2lnZmlsbHNldOWHveaVsAovLyAgICAg6K6+5Li6MQovLyBzaWdhZGRzZXTlh73mlbAKLy8gICAgIOiuvue9ruS/oeWPt+mbhuS4reeahOafkOS4gOS4quagh+W/l+S9jeiuvue9ruS4ujEKLy8gc2lnZGVsc2V0IOWHveaVsAovLyAgICAg5ZKM5LiK6Z2i55qE55u45Y+N77yMMAovLyBzaWdpc21lbWJlcuWHveaVsAovLyAgICAg5Yik5pat5p+Q5Liq5L+h5Y+35piv5ZCm6Zi75aGeCi8vIOS4iumdoueahOWHveaVsOmDveaYr+mYu+WhnuS/oeWPt+mbhueahOaTjeS9nOWHveaVsAovLyDliJvlu7rkuIDkuKrkv6Hlj7fpm4YKLy8gc2lnc2V0X3Qgc2V0IDsKLy8gLy8g5YWI5riF56m6Ci8vIHNpZ2VtcHR5c2V0KCZzZXQpOwovLyAvLyDliKTmlq3kv6Hlj7fmmK/lkKblnKjkv6Hlj7fpm4bkuK0KLy8gaW50IHJldCA9IHNpZ2lzbWVtYmVyKCZzZXQsU0lHSU5UKTsKLy8gaWYgKHJldCA9PSAwKSB7Ci8vIHByaW50ZigiU0lHSU5UIOS4jemYu+WhnlxuIik7Ci8vIH1lbHNlIGlmKHJldCA9PSAxKSB7Ci8vIHByaW50ZigiU0lHSU5UIOmYu+WhnlxuIik7CgovLyB9Ci8vIC8vIOa3u+WKoOS/oeWPt+WIsOS/oeWPt+mbhuS4rQovLyBzaWdhZGRzZXQoJnNldCxTSUdJTlQpOwovLyBzaWdhZGRzZXQoJnNldCxTSUdRVUlUKTsKLy8gIHJldCA9IHNpZ2lzbWVtYmVyKCZzZXQsU0lHSU5UKTsKLy8gaWYgKHJldCA9PSAwKSB7Ci8vIHByaW50ZigiU0lHSU5UIOS4jemYu+WhnlxuIik7Ci8vIH1lbHNlIGlmKHJldCA9PSAxKSB7Ci8vIHByaW50ZigiU0lHSU5UIOmYu+WhnlxuIik7CgovLyB9Ci8vICByZXQgPSBzaWdpc21lbWJlcigmc2V0LFNJR1FVSVQpOwovLyBpZiAocmV0ID09IDApIHsKLy8gcHJpbnRmKCJTSUdRVUlUIOS4jemYu+WhnlxuIik7Ci8vIH1lbHNlIGlmKHJldCA9PSAxKSB7Ci8vIHByaW50ZigiU0lHUVVJVCDpmLvloZ5cbiIpOwoKLy8gfQovLyBzaWdkZWxzZXQoJnNldCwgU0lHUVVJVCk7Ci8vICByZXQgPSBzaWdpc21lbWJlcigmc2V0LFNJR1FVSVQpOwovLyBpZiAocmV0ID09IDApIHsKLy8gcHJpbnRmKCJTSUdRVUlUIOS4jemYu+WhnlxuIik7Ci8vIH1lbHNlIGlmKHJldCA9PSAxKSB7Ci8vIHByaW50ZigiU0lHUVVJVCDpmLvloZ5cbiIpOwoKLy8gfQovLyDns7vnu5/osIPnlKjorr7nva7kv6Hlj7fpm4YKLy8gc2lncHJvY21hc2sKLy8g6K+l5Ye95pWw5Y+v5Lul5bCG5oiR5Lus6Ieq5a6a5LmJ55qE5L+h5Y+36ZuG5pig5bCE5Yiw5YaF5qC45LitCi8vIGhvd++8mgovLyAgICAg5aaC5L2V5a+55YaF5qC45Lit55qE6Zi75aGe5L+h5Y+36ZuG6L+b6KGM5aSE55CGCi8vICAgICAgICAgc2lnX2Jsb2Nr77yMbWFza3xzZXQKLy8gICAgICAgICBTSUdfVU5CTE9DSzogbWFza15zZXQo5byC5oiW5pON5L2cCi8vICAgICAgICAgc2lnX3NldG1hc2sg6KaG55uW5YaF5qC455qE5oyHCi8vIHNpZ3BlbmRpbmcKLy8gICAgIOiOt+WPluWGheaguOW9k+S4reeahOacquWGs+S/oeWPt+mbhgoKLy8g57yW5YaZ5LiA5Liq56iL5bqP77yM5bCG5omA5pyJ55qE5bi46KeE5L+h5Y+377yIMS0zMe+8ieeahOacquWGs+eKtuaAgeaJk+WNsOWHuuadpQovLyDorr7nva7mn5Dkupvkv6Hlj7fmmK/pmLvloZ7nmoTvvIzpgJrov4fplK7nm5jmnaXkuqfnlJ/ov5nkupvkv6Hlj7djdHJsKz8KLy8g6K6+572uMuOAgTPkv6Hlj7fpmLvloZ4KLy8gc2lnc2V0X3Qgc2V0OwovLyBzaWdlbXB0eXNldCgmc2V0KTsKLy8gLy8g5bCGMuOAgTPkv6Hlj7fmt7vliqDliLDkv6Hlj7fpm4bkuK0KLy8gc2lnYWRkc2V0KCZzZXQsU0lHSU5UKTsKLy8gc2lnYWRkc2V0KCZzZXQsU0lHUVVJVCk7Ci8vIC8v5L+u5pS55YaF5qC45Lit55qE6Zi75aGe5L+h5Y+36ZuGCi8vIHNpZ3Byb2NtYXNrKFNJR19CTE9DSywmc2V0LCBOVUxMKTsKLy8gaW50IG51bT0wOwovLyB3aGlsZSgxKSB7Ci8vICAgICBwcmludGYoIm51be+8miVkXG4iLG51bSk7Ci8vICAgICBpZihudW0gPT0gNSl7Ci8vICAgICAgICAgLy8g6Kej6Zmkc2lnaW5055qE6Zi75aGeCi8vICAgICAgICAgc2lncHJvY21hc2soU0lHX1VOQkxPQ0ssJnNldCxOVUxMKTsKLy8gICAgIH0KLy8gICAgIG51bSsrOwovLyAgICAgLy8g6I635Y+W5b2T5YmN55qE5pyq5Yaz5L+h5Y+36ZuGCi8vICAgICBzaWdzZXRfdCBwZW5kaW5nc2V0OwovLyAgICAgc2lnZW1wdHlzZXQoJnBlbmRpbmdzZXQpOwovLyAgICAgc2lncGVuZGluZygmcGVuZGluZ3NldCk7Ci8vICAgICAvL+mBjeWOhmJpdOS9jQovLyAgICAgZm9yKGludCBpPTE7aTw9MzI7aSsrKSB7Ci8vIGlmKHNpZ2lzbWVtYmVyKCZwZW5kaW5nc2V0LGkpPT0xKXsKLy8gICAgIHByaW50ZigiMSIpOwovLyB9ZWxzZSBpZihzaWdpc21lbWJlcigmcGVuZGluZ3NldCwgaSk9PTApIHsKLy8gICAgIHByaW50ZigiMCIpOwovLyB9ZWxzZXsKLy8gICAgIHBlcnJvcigic2lnaXNtZW1iZXJcbiIpO2V4aXQoMCk7Ci8vIH0KCgovLyAgICAgfXByaW50ZigiXG4iKTtzbGVlcCgxKTsKLy8gfQovLyBzaWdhY3Rpb24KLy8g5qOA5p+l5oiW6ICF5pS55Y+Y5L+h5Y+355qE5aSE55CG5pa55byPCi8vIHNpZ251be+8jOmcgOimgeaNleaNieeahOS/oeWPtwovLyBhY3TvvIzmjZXmjYnliLDkv6Hlj7flkI7pnIDopoHmiafooYznmoTliqjkvZwKLy8gb2xkYWFjdO+8jOayoeeUqAoKLy8gc3RydWN0IHNpZ2FjdGlvbgovLyAgICAgc2FfaGFuZGxlOuWbnuiwg+WHveaVsOaMh+mSiAoKLy8gICAgIOS4tOaXtumYu+WhnuS/oeWPt+mbhgovLyAgICAgc2FfbWFzawovLyAgICAg5Li05pe26Zi75aGe5p+Q5Lqb5L+h5Y+3CgovLyDkvb/nlKjpgqPkuKrkv6Hlj7flpITnkIblr7nkv6Hlj7fov5vooYzlpITnkIbjgILlpoLmnpzmmK8w6KGo56S65L2/55So5Zue6LCD5Ye95pWwCi8vICAgICAvLyDlv4XpobvlnKjorr7nva7lrprml7blmajkuYvliY3ms6jlhozlm57osIPlh73mlbAKLy8g5pyA5aW95L2/55Soc2lnYWN0aW9u5Y675rOo5YaM5Zue6LCD5Ye95pWwCi8vIHN0cnVjdCBzaWdhY3Rpb24gYWN0OwovLyBhY3Quc2FfZmxhZ3MgPSAwOwovLyBhY3Quc2Ffc2lnYWN0aW9uID0gc2lnX2hhbmRsZXI7Ci8vIC8v5riF56m65Li05pe26Zi75aGe5L+h5Y+36ZuGCi8vIHNpZ2VtcHR5c2V0KCZhY3Quc2FfbWFzayk7Ci8vIHNpZ2FjdGlvbihTSUdBTFJNLCZhY3QsTlVMTCk7Ci8vIC8vIHNpZ190IHJldHIgPSAgc2lnbmFsKFNJR0FMUk0sc2lnX2hhbmRsZXIpOwovLyAvLyBpZihyZXRyPT1TSUdfRVJSKSB7Ci8vIC8vICAgICBwZXJyb3IoInNpZ25hbOazqOWGjCIpOwovLyAvLyAgICAgZXhpdCgtMSk7Ci8vIC8vIH0KLy8gc3RydWN0IGl0aW1lcnZhbCBuZXdfdmFsdWU7Ci8vIC8vIOiuvue9ruWAvAovLyBuZXdfdmFsdWUuaXRfaW50ZXJ2YWwudHZfc2VjID0gMjsKLy8gbmV3X3ZhbHVlLml0X2ludGVydmFsLnR2X3VzZWMgPTA7Ci8vIG5ld192YWx1ZS5pdF92YWx1ZS50dl9zZWM9MzsKLy8gbmV3X3ZhbHVlLml0X3ZhbHVlLnR2X3VzZWM9MDsKLy8gaW50IHJldCA9IHNldGl0aW1lcihJVElNRVJfUkVBTCwmbmV3X3ZhbHVlLE5VTEwpOwovLyBwcmludGYoIuWumuaXtuWZqOW8gOWni1xuIik7Ci8vIGlmIChyZXQ9PS0xKXsKLy8gICAgIHBlcnJvcigic2V0dGltZXIiKTsKLy8gICAgIGV4aXQoMCk7Ci8vIH0KLy8gLy8gZ2V0Y2hhcigpOwovLyAvLyB3aGlsZSgxKTsKLy8gc2lnY2hpbGTkv6Hlj7fkuqfnlJ/nmoTmnaHku7YKLy8gICAgIOWtkOi/m+eoi+e7iOatogovLyAgICAg5a2Q6L+b56iL5o6l5pS25Yiwc2lnc3RvcOS/oeWPt+WBnOatogovLyAgICAg5a2Q6L+b56iL5aSE5LqO5YGc5rue54q25oCB77yM5pS25Yiwc2lnY29udOWQjuWUpOmGkgovLyDniLbov5vnqIvpu5jorqTokavoiqbor6Xkv6Hlj7cKLy8g5Y+v5Lul55So5LqO6Kej5Yaz5YO15bC46L+b5Z+O55qE6Zeu6aKYCiNpbmNsdWRlPHN5cy90aW1lLmg+CiNpbmNsdWRlPHRpbWUuaD4Kdm9pZCBzaWdfaGFuZGxlcjIoaW50IG51bSl7CnRpbWVfdCAgICAgdG0yID0gdGltZShOVUxMKTsKc3RydWN0IHRtKiBsb2MgPSBsb2NhbHRpbWUoJnRtMik7CgovLyBjaGFyIGJ1ZndhZWhyc3RlZHlydGVkc1s1MjRdOwovLyBzcHJpbnRmKGJ1ZndhZWhyc3RlZHlydGVkcywgIiVkLSVkLSVkICVkOiVkOiVkXG4iLGxvYy0+dG1feWVhcixsb2MtPnRtX21vbixsb2MtPnRtX21kYXksbG9jLT50bV9ob3VyLGxvYy0+dG1fbWluLGxvYy0+dG1fc2VjKTsKLy8gcHJpbnRmKCIlc1xuIixidWZ3YWVocnN0ZWR5cnRlZHMpOwpjaGFyKiBzdHIgID1hc2N0aW1lKGxvYyk7CmludCBmZCA9b3BlbigidGltZS50eHQiLE9fUkRXUnxPX0NSRUFUfE9fQVBQRU5ELDA2NjQpOwp3cml0ZShmZCxzdHIsc3RybGVuKHN0cikpOwpjbG9zZShmZCk7CiAgICAvLyBwcmludGYoIuaNleaNieWlpeW+l+S/oeWPt++8miVkXG4iLG51bSk7CiAgICAvLyAvLyDlm57pppbntKvnpoHln44KICAgIC8vIC8vIHdoaWxlKDEpewogICAgLy8gLy8gd2FpdChOVUxMKTt9CiAgICAvLyB3aGlsZSAoMSkKICAgIC8vIHtpbnQgcmV0ID13YWl0cGlkKC0xLE5VTEwsV05PSEFORyk7CiAgICAvLyAgICAgLyogY29kZSAqLwogICAgLy8gICAgIGlmKHJldD4wKXsKICAgIC8vICAgICAgICAgcHJpbnRmKCLkuozlrZfmjILkuobvvJolZFxuIiwgcmV0KTsKICAgIC8vICAgICB9ZWxzZSBpZihyZXQgPT0wKSB7CiAgICAvLyAgICAgICAgIC8vIOivtOaYjui/mOacieWtkOi/m+eoi+aIluiAhQogICAgLy8gICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgIH1lbHNlIGlmKHJldCA9PS0gMSl7CiAgICAvLyAgICAgICAgIC8vIOayoeaciee0q+emgeWfjuS6hgogICAgLy8gICAgICAgICBicmVhazsKICAgIC8vICAgICB9CiAgICAvLyB9CiAgICAKfQojaW5jbHVkZTxzeXMvc2htLmg+Ci8vIGludCBtYWluKCkKLy8gewovLyAgICAgLy8g5o+Q5YmN6K6+572u5aW96Zi75aGe5L+h5Y+36ZuGCi8vICAgICAvLyDpmLvloZ5zaWdjaGlsZAovLyAgICAgLy8g5Zug5Li6VU7lnKjopb9tYWlu6L+Z56eN5Y+v6IO977yaCi8vICAgICAvLyAgICAg5a2Q6L+b56iL5Zyo5rOo5YaM5Y+35Zue6LCD5Ye95pWw5LmL5YmN5bCx5bey57uP57uT5p2f5LqGCi8vIHNpZ3NldF90IHNldDsKLy8gc2lnZW1wdHlzZXQoJnNldCk7Ci8vIHNpZ2FkZHNldCgmc2V0LFNJR0NITEQpOwovLyBzaWdwcm9jbWFzayhTSUdfQkxPQ0ssJnNldCAgLE5VTEwpOwoKCi8vIHBpZF90IHBpZDsKLy8gaW50IGNvdW50PTIwOwovLyBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi8vIHsKLy8gICAgIHBpZCA9IGZvcmsoKTsKLy8gICAgIGlmKHBpZD09MCl7Ci8vICAgICAgICAgYnJlYWs7Ci8vICAgICB9Ci8vICAgICAvKiBjb2RlICovCgovLyB9Ci8vIC8vIOaNleaNieWtkOi/m+eoi+atu+S6oeaXtuWPkemAgeeahHNpZ2NoaWxk5L+h5Y+3Ci8vIHN0cnVjdCBzaWdhY3Rpb24gYWN0OwovLyBhY3Quc2FfZmxhZ3M9MDsKLy8gYWN0LnNhX3NpZ2FjdGlvbiA9IHNpZ19oYW5kbGVyMjsKLy8gc2lnZW1wdHlzZXQoJmFjdC5zYV9tYXNrKTsKLy8gc2lnYWN0aW9uKFNJR0NITEQsJmFjdCxOVUxMKTsKLy8gLy8g5rOo5YaM5a6M5L+h5Y+35o2V5o2J5LmL5ZCO77yM5bCx5o6l6Kem6Zi75aGeCi8vIHNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCZzZXQsTlVMTCk7Ci8vIGlmKHBpZD4wKXsKLy8gICAgIC8vIOeItui/m+eoiwovLyAgICAgd2hpbGUoMSl7Ci8vICAgICAgICAgcHJpbnRmKCLmiJHmmK/kvaDniLlcbiIpOwovLyAgICAgICAgIHNsZWVwKDIpOwovLyAgICAgfX0gZWxzZSBpZihwaWQ9PTApewovLyAgICAgICAgIHByaW50Zigi5YS/5a2X77yaJWRcbiIsZ2V0cGlkKCkpOwovLyAgICAgfQoKLy8gcGlkX3QgcGlkID0gZm9yaygpOwovLyBpZihwaWQ9PTApewovLyAgICAgZm9yKGludCBpPTA7aTw1O2krKykgewovLyAgICAgICAgIHByaW50Zigi5a2p5a2Q6L+b56iLJWRcbiIsIGkpOwovLyAgICAgICAgIHNsZWVwKDEpOwovLyAgICAgfQovLyB9ZWxzZSBpZihwaWQ+MCkgewovLyAgIHByaW50Zigi54i56L+b56iLXG4iKTsKLy8gICBzbGVlcCgyKTsKLy8gICBwcmludGYoIuWCu+WEv+WtkFxuIik7Ci8vICAga2lsbChwaWQsU0lHSU5UKTsKLy8gfQovLyDlhbHkuqvlhoXlrZgKLy8g5Yib5bu65LiA5Liq5paw55qE5YaF5a2Y5YWx5Lqr5q61Ci8vIOaIluiAheiOt+WPluS4gOS4qiAgIOaXouacieeahOWFseS6q+WGheWtmOautQovLyBzaG1hdOWSjOW9k+WJjei/m+eoi+i/m+ihjOWFs+iBlAovLyBzaG1kYXTvvIznp7vpmaTlkozlvZPliY3ov5vnqIvnmoTlhbPogZQKLy8gc2htY3RsCi8vIOWIm+W7uuS4gOS4quWFseS6q+WGheWtmAovLyBpbnQgc2htaWQgPSBzaG1nZXQoNTAsNDA5NixJUENfQ1JFQVR8MDY2NCk7Ci8vIC8vIOWSjOW9k+WJjei/m+eoi+i/m+ihjOWFs+iBlAovLyB2b2lkKiBwdHIgPSBzaG1hdChzaG1pZCxOVUxMLDApOwovLyBwcmludGYoIiVkXG4iLCBzaG1pZCk7Ci8vIGNoYXIqc3RyID0gImhlbGxvIHdvcmxkIjsKLy8gbWVtY3B5KHB0cixzdHIsc3RybGVuKHN0cikrMSk7Ci8vIHByaW50Zigi5oyJ5Lu75oSP6ZSu57un57utXG4iKTsKLy8gZ2V0Y2hhcigpOwovLyBzaG1kdChwdHIpOwovLyBzaG1jdGwoc2htaWQsSVBDX1JNSUQsTlVMTCk7Ci8vIGZ0b2vlh73mlbDvvIzmoLnmja7mjIflrprnmoTot6/lvoTlkI3lkoxpbnTmjIfnlJ/miJDkuIDkuKrlhbHkuqvlhoXlrZjnmoRrZXkKCi8vIOiZveeEtuaYr2ludOexu+Wei+eahOaMh++8jOS9huaYr+WGheaguOWPquS8muS9v+eUqOS7lueahOS4gOS4quWtl+iKgu+8jOS5n+WwseaYr+ivtOiMg+WbtOWFtuWunuaYrzAtMjU1Ci8vIOaTjeS9nOezu+e7n+WmguS9leefpemBk+S4gOWdl+WFseS6q+WGheWtmOacieWkmuWwkeS4qui/m+eoi+WFs+iBlAovLyAgICAg5YWx5Lqr5YaF5a2Y57u05oqk5LqG5LiA5Liq57uT5p6E5L2T77yMc3RydWN0IHNobWlk4oCU4oCUZHMKLy8gICAgIOivpee7k+aehOS9k+S4reacieS4gOS4quaIkOWRmHNobV9ub2F0dGFjaOiusOW9leS6huebuOWFs+S/oeaBrwovLyAgICAgaXBjcyAtbeWPr+S7peafpeeciwovLyDnvJblhpnkuIDkuKrlrojmiqTov5vnqIvvvIzmr4/pmpTkuKTnp5Lojrflj5bkuIDkuIvns7vnu5/ml7bpl7TvvIzlsIbov5nkuKrml7bpl7TlhpnlhaXno4Hnm5jmlofku7bkuK0KLy8g5Yib5bu65a2Q6L+b56iL77yM5o6o5Ye654i26L+b56iLCi8vIHBpZF90IHBpZCA9Zm9yaygpOwovLyBpZihwaWQ+MCl7Ci8vICAgICBleGl0KDApOwovLyB9Ci8vIC8vIOWwhuWtkOi/m+eoi+aPkOWNh+S4uuWbnuivne+8jAovLyBzZXRzaWQoKTsKLy8gLy8g6K6+572u5o6p56CBCi8vIHVtYXNrKDAyMik7Ci8vIC8vIOabtOaUueW3peS9nOebruW9lQovLyBjaGRpcigiLyIpOwovLyAvLyDlhbPpl63lubbph43lrprlkJHmlofku7bmj4/ov7DnrKYKLy8gLy8gaW50IGZkID0gb3BlbigiL2Rldi9udWxsIixPX1JEV1IpOwovLyAvLyBkdXAyKGZkLFNURElOX0ZJTEVOTyk7Ci8vIC8vIGR1cDIoZmQsU1RET1VUX0ZJTEVOTyk7Ci8vIC8vIGR1cDIoZmQsU1RERVJSX0ZJTEVOTyk7Ci8vIC8vIOS4muWKoemAu+i+kQovLyAvLyDliJvlu7rlrprml7blmagKLy8gLy8gc2V0aXRpbWVyKElUSU1FUl9SRUFMLCZ2YWwsTlVMTCk7Ci8vIC8vIOaNleaNieWumuaYr+S/oeWPtwovLyBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKLy8gYWN0LnNhX2ZsYWdzID0gMDsKLy8gYWN0LnNhX3NpZ2FjdGlvbiA9IHNpZ19oYW5kbGVyMjsKLy8gc2lnZW1wdHlzZXQoJmFjdC5zYV9tYXNrKTsKLy8gc2lnYWN0aW9uKFNJR0FMUk0sJmFjdCxOVUxMKTsKLy8gLy8gc3RydWN0IGl0aW1lcnZhbCBuZXdfdmFsdWU7Ci8vIC8vIOiuvue9ruWAvAovLyBzdHJ1Y3QgaXRpbWVydmFsIG5ld192YWx1ZTsKLy8gbmV3X3ZhbHVlLml0X2ludGVydmFsLnR2X3NlYyA9IDI7Ci8vIG5ld192YWx1ZS5pdF9pbnRlcnZhbC50dl91c2VjID0wOwovLyBuZXdfdmFsdWUuaXRfdmFsdWUudHZfc2VjPTI7Ci8vIG5ld192YWx1ZS5pdF92YWx1ZS50dl91c2VjPTA7Ci8vIGludCByZXQgPSBzZXRpdGltZXIoSVRJTUVSX1JFQUwsJm5ld192YWx1ZSxOVUxMKTsKLy8gd2hpbGUoMSl7Ci8vICAgICBzbGVlcCg1KTsKLy8gfQovLyBwdGhyZWFkX2NyZWF0ZeWHveaVsAovLyAgICAg55So5LqO5Yib5bu65LiA5Liq5a2Q57q/56iLCgovLyDkuIDoiKzmg4XlhrXkuIvvvIxtYWlu5Ye95pWw5omA5Zyo55qE5Y6/5Z+O55qE5Li65Li75Y6/5Z+OCi8vIOWFtuS9meWIm+W7uueahOeOsOaIkOS4uuWtkOe6v+eoiwovLyDnqIvluo/kuK3pu5jorqTlj6rmnInkuIDkuKrnur/nqIvvvIjkuLvnur/nqIvvvIkKLy8g6LCD55SocHRocmVhZF9jcmVhdGXliJvlu7rkuIDkuKrmlrDnmoTljr/ln44KLy8gcHRoZXJlX2RldGFjaAovLyAgICAg5YiG56a75Y6/5Z+OCi8vICAgICDlpYvlipvkuIDkuKrljr/ljr/ln47lsYIKLy8gICAgIOiiq+WIhuemu+eahOWOv+WfjuWcqOS4reWAvOW+l+aXtuWAme+8jOi1hOa6kOS8muiHquWKqOi/lOWbnue7meezu+e7nwovLyAgICAg5LiN6IO95aSa5qyh5YiG56a7Ci8vICAgICDlkKbliJnkvJrkuqfnlJ/kuI3lj6/pooTmlpnnmoTooYzkuLoKLy8gICAgIOS4jeiDveWOu+i/nuaOpeS4gOS4quW3sue7j+WIhuemu+eahOWOv+WfjgovLyAgICAgICAgIOWQpuWImeS8muaKpemUmQovLyAgICAg5Y+C5pWw77yaCi8vICAgICAgICAg5YiG6KaB5YiG56a755qE5Y6/5Z+OaWQKLy8gICAgICAgICDmiJDlip/ov5Tlm54w77yM5aSx6LSl6L+U5Zue6ZSZ6K+v5Y+3Ci8vIOWIm+W7uuS4gOS4quaYvuaIkOeGn+aApwovLyDliJvlu7o15Liq55Sf5Lqn6ICF57q/56iL77yMNeS4qua2iOi0ueiAhee6v+eoiwovLyDkvb/nlKjpk77ooajmnaXlrp7njrDlrrnlmagKLy8g5L2/55So5LqS5pal6YeP6Kej5Yaz5ZCM5q2l6Zeu6aKYCnB0aHJlYWRfbXV0ZXhfdCBtdXRleHQ7Ci8vIOWIm+W7uuadoeS7tuWPmOmHjwpwdGhyZWFkX2NvbmRfdCBjb25kOwojaW5jbHVkZSA8c2VtYXBob3JlLmg+Ci8vIOWIm+W7uuS4pOS4quS/oeWPt+mHjwpzZW1fdCBwc2VtOwpzZW1fdCBjc2VtOwpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgbnVtOwogICAgc3RydWN0IE5vZGUqIG5leHQ7Cn07Ci8vIOWktOiKgueCuQpzdHJ1Y3QgTm9kZSogaGVhZCA9IE5VTEw7Cgp2b2lkKiBwcm9kdWNlciAodm9pZCogYXJnKSB7CiAgICB3aGlsZSgxKSB7CiAgICAgICAgLy8g5LiN5pat5Zyw5Yib5bu65paw55qE6IqC54K55bm25re75Yqg5Yiw6ZO+6KGo5b2T5LitCiAgICAgICAgc2VtX3dhaXQoJnBzZW0pOwogICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwogICAgICAgIHN0cnVjdCBOb2RlKiBuZXdfbm9kZSA9IChzdHJ1Y3QgTm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3QgTm9kZSkpOwogICAgICAgIG5ld19ub2RlLT5uZXh0ID0gaGVhZDsKICAgICAgICBoZWFkID0gbmV3X25vZGU7CiAgICAgICAgbmV3X25vZGUtPm51bSA9IHJhbmQoKSAlIDEwMDA7CiAgICAgICAgcHJpbnRmKCJhZGQgbm9kZSwgbnVtICVkLCB0aWQ6ICVsZFxuIiwgbmV3X25vZGUtPm51bSwgcHRocmVhZF9zZWxmKCkpOwogICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CiAgICAgICAgLy8g6YCa55+l5raI6LS56ICF55Sf5Lqn5Ye65LqG5LiA5Liq5Lqn5ZOBCiAgICAgICAgc2VtX3Bvc3QoJmNzZW0pOwogICAgfQogICAgcmV0dXJuIE5VTEw7Cn0Kdm9pZCogY29uc3VtZXIgKHZvaWQqIGFyZykgewogICB3aGlsZSgxKSB7CiAgICAgICAgc2VtX3dhaXQoJmNzZW0pOwogICAgICAgICAvLyDkv53lrZjlpLTnu5PngrnnmoTmjIfpkogKICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKICAgICAgICBzdHJ1Y3QgTm9kZSogdG1wID0gaGVhZDsKICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgICAgICBwcmludGYoImRlbGV0ZSBub2RlLCBudW06ICVkLCB0aWQ6ICVsZFxuIiwgdG1wLT5udW0sIHB0aHJlYWRfc2VsZigpKTsKICAgICAgICBmcmVlKHRtcCk7CiAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKICAgICAgICAvLyDpgJrnn6XnlJ/kuqfogIXlj6/ku6Xlho3nlJ/kuqfkuIDkuKoKICAgICAgICBzZW1fcG9zdCgmcHNlbSk7CiAgICB9CiAgICByZXR1cm4gTlVMTDsKfQojaW5jbHVkZTxhcnBhL2luZXQuaD4KI2luY2x1ZGU8Yml0cy9zb2NrZXQuaD4Kdm9pZCByZWN5bGVfY2hpbGQoaW50IGFyZykgewogICAgd2hpbGUoMSkgewogICAgICAgIGludCByZXQgPSB3YWl0cGlkKC0xLCBOVUxMLCBXTk9IQU5HKTsKICAgICAgICBpZiAoLTEgPT0gcmV0KSB7CiAgICAgICAgICAgIC8vIOaJgOacieeahOWtkOi/m+eoi+mDveWbnuaUtuWujOavlQogICAgICAgICAgICBwcmludGYoIuaJgOacieeahOWtkOi/m+eoi+WbnuaUtuWujOavlVxuIik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gZWxzZSBpZiAocmV0ID09IDApIHsKICAgICAgICAgICAgLy8g6K+05piO6L+Y5pyJ5a2Q6L+b56iL5rS7552ACiAgICAgICAgICAgIC8vIOetieW+heS4i+S4gOasoeS/oeWPt+i/m+adpQogICAgICAgICAgICBicmVhazsKICAgICAgICB9IGVsc2UgaWYgKHJldCA+IDApIHsKICAgICAgICAgICAgLy8g6L+b56iL6KKr5Zue5pS25LqGCiAgICAgICAgICAgIHByaW50Zigi5a2Q6L+b56iLJWTooqvlm57mlLbkuoZcbiIsIHJldCk7CiAgICAgICAgfQogICAgfQp9CiNpbmNsdWRlPGVycm5vLmg+CiNpbmNsdWRlPGN0eXBlLmg+CiNpbmNsdWRlPGN0eXBlLmg+CiNpbmNsdWRlPGN0eXBlLmg+CiNpbmNsdWRlPHN5cy9zZWxlY3QuaD4KI2luY2x1ZGU8cG9sbC5oPgojaW5jbHVkZTxzeXMvZXBvbGwuaD4KI2luY2x1ZGU8c3lzL3VuLmg+CmludCBtYWluKCkgewogICAgLy8g5pys5Zyw5aWX5o6l5a2X77yM55So5LqO5pyJ5YWz57O755qE6L+b56iL6Ze055qE6YCa5L+hCiAgICAvLyDkuZ/og73lpJ/lrp7njrDmsqHmnInlhbPns7vnmoTov5vnqIvpl7TpgJrkv6EKICAgIC8vIOacrOWcsOWll+aOpeWtl+mAmuS/oea1geeoiwogICAgLy8g5ZKM572R57uc5aWX5o6l5a2X55u45Ly877yM5LiA6Iis6YeH55SoVENQ6YCa5L+h5rWB56iLCiAgICAvLyDmnI3liqHlmajnq68KICAgIC8vIOWIm+W7uuS4gOS4queUqOS6juebkeWQrOeahOWll+aOpeWtlwogICAgLy8gaW50IGZkID0gc29ja2V0KFBGX0xPQ0FMLCBTT0NLX1NUUkVBTSwgMCk7CiAgICAvLyDnm5HlkKznmoTlpZfmjqXlrZfopoHnu5HlrprnmoTmnKzlnLDnmoTlpZfmjqXlrZfmlofku7YKICAgIC8vIHN0cnVjdCBzb2NrYWRkcl91biBhZGRyOwogICAgLy8g57uR5a6a5oiQ5Yqf5LmL5ZCO77yM5oyH5a6a55qEc3VuX3BhdGjkuK3nmoTmlofku7bkvJroh6rliqjnlJ/miJAKICAgIC8vIGJpbmQobGZkLCBhZGRyLCBsZW4pCiAgICAvLyDlvIDlp4vnm5HlkKwKICAgIC8vIGxpc3RlbihsZmQsIDEwMCk7CiAgICAvLyDnrYnlvoXlubbmjqXlj5flrqLmiLfnq6/ov57mjqXor7fmsYIKICAgIC8vIGludCBjZmQgPSBhY2NlcHQobGZkLCAmY2xpYWRkciwgbGVuKTsKICAgICAgICAvLyDlvIDlp4vpgJrkv6EKICAgICAgICAvLyDmjqXmlLbmlbDmja7vvIwgICByZWFkL3JlY3YKICAgICAgICAvLyDlj5HpgIHmlbDmja4gICAgd3JpdGUvc2VuZAogICAgICAgIC8vIOWFs+mXrei/nuaOpQogICAgCgogICAgLy8g5a6i5oi356uv5rWB56iLCiAgICAvLyDliJvlu7rpgJrkv6HlpZfmjqXlrZcKICAgIC8vIGludCBmZCA9IHNvY2tldChBRl9VTklYL0FGX0xPQ0FMLCBTT0NLX1NUUkFFTSwgMCk7CiAgICAvLyDnm5HlkKzlpZfmjqXlrZfnu5HlrprmnKzlnLBJUOWSjOerr+WPowogICAgLy8gc3RydWN0IHNvY2thZGRyX3VuIGFkZHI7CiAgICAvLyAgYmluZChsZmQsIGFkZHIsIGxlbikKICAgIC8vIOi/nuaOpeacjeWKoeWZqAogICAgLy8gc2Nva2FkZHIgdW4gc2VydmVyYWRkcjsKICAgIC8vIGNvbm5lY3TvvIhsZmQsICZzZXJ2ZXJfYWRkciwgc2l6ZSDvvIkKICAgICAvLyDlvIDlp4vpgJrkv6EKICAgICAgICAvLyDmjqXmlLbmlbDmja7vvIwgICByZWFkL3JlY3YKICAgICAgICAvLyDlj5HpgIHmlbDmja4gICAgd3JpdGUvc2VuZAogICAgICAgIC8vIOWFs+mXrei/nuaOpQoKICAgIAogICAgLy8g5Yib5bu65aWX5o6l5a2XCiAgICBpbnQgbGZkID0gc29ja2V0KEFGX0xPQ0FMLCBTT0NLX1NUUkVBTSwgMCk7CiAgICBpZigtMSA9PSBsZmQpIHsKICAgICAgICBwZXJyb3IoInNvY2tldCIpOwogICAgICAgIGV4aXQoLTEpOwogICAgfQoKICAgIC8vIOe7keWumgogICAgc3RydWN0IHNvY2thZGRyX3VuIGFkZHI7CiAgICBhZGRyLnN1bl9mYW1pbHkgPSBBRl9MT0NBTDsKICAgIHVubGluaygic2VydmVyLnNvY2siKTsKICAgIHN0cmNweShhZGRyLnN1bl9wYXRoLCAic2VydmVyLnNvY2siKTsKICAgIAogICAgaW50IHJldCA9IGJpbmQobGZkLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSk7CiAgICBpZigtMSA9PSByZXQpIHsKICAgICAgICBwZXJyb3IoImJpbmQiKTsKICAgICAgICBleGl0KC0xKTsKICAgIH0KCiAgICAvLyDnm5HlkKwKICAgIHJldCA9IGxpc3RlbihsZmQsIDEwMCk7CiAgICBpZigtMSA9PSByZXQpIHsKICAgICAgICBwZXJyb3IoImxpc3RlbiIpOwogICAgICAgIGV4aXQoLTEpOwogICAgfQoKICAgIC8vIOetieW+heWuouaIt+err+i/nuaOpQogICAgc3RydWN0IHNvY2thZGRyX3VuIGNsaV9hZGRyOwogICAgaW50IF9sZW4gPSBzaXplb2YoY2xpX2FkZHIpOwogICAgaW50IGNmZCA9IGFjY2VwdChsZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKSZjbGlfYWRkciwgKHNvY2tsZW5fdCopJl9sZW4pOwogICAgaWYoLTEgPT0gcmV0KSB7CiAgICAgICAgcGVycm9yKCJhY2NlcHQiKTsKICAgICAgICBleGl0KC0xKTsKICAgIH0KCiAgICBwcmludGYoIuWuouaIt+err+Wll+aOpeWtl+aWh+S7tuWQje+8miAlc1xuIiwgY2xpX2FkZHIuc3VuX3BhdGgpOwoKICAgIC8vIOW8gOWni+mAmuS/oQogICAgd2hpbGUoMSkgewogICAgICAgIGNoYXIgYnVmWzEyOF0gPSB7MH07CiAgICAgICAgaW50IGxlbiA9IHJlY3YoY2ZkLCBidWYsIHNpemVvZihidWYpLCAwKTsgCiAgICAgICAgaWYoLTEgPT0gbGVuKSB7CiAgICAgICAgICAgIHBlcnJvcigicmVjdiIpOwogICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICB9IAogICAgICAgIGVsc2UgaWYoMCA9PSBsZW4pIHsKICAgICAgICAgICAgcHJpbnRmKCLlrqLmiLfnq6/mlq3lvIDov57mjqVcbiIpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZigwIDwgbGVuKSB7CiAgICAgICAgICAgIHByaW50Zigi5a6i5oi356uv5Y+R6YCB6L+H5p2l55qE5pWw5o2u77yaICVzXG4iLCBidWYpOwogICAgICAgICAgICBzZW5kKGNmZCwgYnVmLCBsZW4sIDApOwogICAgICAgIH0gIAogICAgICAgIHNsZWVwKDEpOyAgICAgICAKICAgIH0KICAgIGNsb3NlKGNmZCk7CiAgICBjbG9zZShsZmQpOwoKICAgIHJldHVybiAwOwp9Ci8vIHsKLy8gICAgIC8vIOe7hOaSreWSjOW5v+aSreW3ruS4jeWkmu+8jOWwseaYr+mcgOimgeiuvue9ruS4gOS4que7hOaSree7hAovLyAgICAgLy8g5a6i5oi356uv5Yqg5YWl5Yiw5aSa5pKt57uECi8vICAgICAvLyBsZXZlbDogICAgICBJUFBST1RPX0lQCi8vICAgICAvLyBvcHRuYW1lOiAgICBJUF9BRERfTUVNQkVSU0hJUAovLyAgICAgLy8gb3B0dmFsOiAgICAgc3RydWN0IG1yZXFuCi8vICAgICBpbnQgZmQgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgMCk7Ci8vICAgICBpZiAoLTEgPT0gZmQpIHsKLy8gICAgICAgICBwZXJyb3IoIuiNieaLn+WQl3NvY2tldCIpOwovLyAgICAgICAgIGV4aXQoLTEpOwovLyAgICAgfQovLyAgICAgLy8g6K6+572u5aSa5pKt5bGe5oCn77yM6K6+572u5aSW5Ye65o6l5Y+jCi8vICAgICBzdHJ1Y3QgaW5fYWRkciBpbXJfbXVsdGlhZGRyOwovLyAgICAgLy8g5Yid5aeL5YyW5aSa5pKt5Zyw5Z2ACi8vICAgICBpbmV0X3B0b24oQUZfSU5FVCwgIjIzOS4wLjAuMSIsICZpbXJfbXVsdGlhZGRyLnNfYWRkcik7Ci8vICAgICBzZXRzb2Nrb3B0KGZkLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfSUYsICZpbXJfbXVsdGlhZGRyLCBzaXplb2YoaW1yX211bHRpYWRkcikpOwoKCi8vICAgICAvLyDliJ3lp4vljJblrqLmiLfnq6/lnLDlnYDkv6Hmga8KLy8gICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwovLyAgICAgYWRkci5zaW5fZmFtaWx5ICA9QUZfSU5FVDsKLy8gICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyg5OTk5KTsKLy8gICAgIGluZXRfcHRvbihBRl9JTkVULCAiMjM5LjAuMC4xIiwgJmFkZHIuc2luX2FkZHIuc19hZGRyKTsKCi8vICAgICBpbnQgbnVtID0gMDsKLy8gICAgIHdoaWxlKDEpIHsKLy8gICAgICAgICAvLyBjaGFyIHJlY3ZidWZbMTI4XTsKLy8gICAgICAgICAvLyBjaGFyIGlwX2J1ZlsxNl07Ci8vICAgICAgICAgLy8gc3RydWN0IHNvY2thZGRyX2luIGNsaWFkZHI7Ci8vICAgICAgICAgLy8gaW50IGxlbiA9IHNpemVvZihjbGlhZGRyKTsKLy8gICAgICAgICAvLyBpbnQgbnVtID0gcmVjdmZyb20oZmQsIHJlY3ZidWYsIHNpemVvZihyZWN2YnVmKSwgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGlhZGRyLCAoc29ja2xlbl90KikmbGVuKTsKLy8gICAgICAgICAvLyBpZiAoLTEgPT0gbnVtKSB7Ci8vICAgICAgICAgLy8gICAgIHBlcnJvcigi6I2J5ouf5ZCXcmVjdmZyb20iKTsKLy8gICAgICAgICAvLyAgICAgZXhpdCgtMSk7Ci8vICAgICAgICAgLy8gfQovLyAgICAgICAgIC8vIHByaW50Zigi5a6i5oi356uvSVDvvJolcywg56uv5Y+j77yaJWRcbiIsIAovLyAgICAgICAgIC8vICAgICBpbmV0X250b3AoQUZfSU5FVCwgJmNsaWFkZHIuc2luX2FkZHIuc19hZGRyLCBpcF9idWYsIHNpemVvZihpcF9idWYpKSwgCi8vICAgICAgICAgLy8gICAgIG50b2hzKGNsaWFkZHIuc2luX3BvcnQpCi8vICAgICAgICAgLy8gICAgICk7Ci8vICAgICAgICAgLy8gcHJpbnRmKCLmjqXmlLbliLDnmoTmlbDmja7vvJolc1xuIiwgcmVjdmJ1Zik7Ci8vICAgICAgICAgY2hhciBzZW5kYnVmWzEyOF07Ci8vICAgICAgICAgc3ByaW50ZihzZW5kYnVmLCJIZWxsbyDkuLTmvbwlZFxuIiwgbnVtKyspOwoKLy8gICAgICAgICAvLyDlj5HpgIHmlbDmja4KLy8gICAgICAgICBzZW5kdG8oZmQsIHNlbmRidWYsIHN0cmxlbihzZW5kYnVmKSsxLCAwLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSk7Ci8vICAgICAgICAgcHJpbnRmKCLnu4Tmkq3nmoTmlbDmja4lc1xuIiwgc2VuZGJ1Zik7Ci8vICAgICAgICAgc2xlZXAoMSk7Ci8vICAgICB9Ci8vICAgICBjbG9zZShmZCk7Ci8vICAgICByZXR1cm4gMDsKLy8gfQovLyAvLyAgICAgLy8g6K6+572u5bm/5pKt5bGe5oCnCi8vIC8vICAgICAvLyBzZXRzb2Nrb3B0Ci8vIC8vICAgICAvLyBsZXZlbDogU09MX1NPQ0tFVAovLyAvLyAgICAgLy8gb3B0bmFtZTogU09fQlJPQURDQVNUCi8vIC8vICAgICAvLyBvcHR2YWw6IGludOexu+Wei+eahOWAvOOAgjHooajnpLrlub/mkq0KLy8gLy8gICAgIC8vIG9wdGxlbjogb3B0dmFsdWXnmoTlpKflsI8KCi8vIC8vICAgICAvLyDlub/mkq3nmoTlrp7njrAKLy8gLy8gICAgIC8vIFVEUAovLyAvLyAgICAgLy8gc2VuZHRvCi8vIC8vICAgICAvLyByZWNlaXZlX2Zyb20KLy8gLy8gICAgIGludCBmZCA9IHNvY2tldChQRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKLy8gLy8gICAgIGlmICgtMSA9PSBmZCkgewovLyAvLyAgICAgICAgIHBlcnJvcigi6I2J5ouf5ZCXc29ja2V0Iik7Ci8vIC8vICAgICAgICAgZXhpdCgtMSk7Ci8vIC8vICAgICB9Ci8vIC8vICAgICAvLyDorr7nva7lub/mkq3lsZ7mgKcKLy8gLy8gICAgIGludCBvcCA9IDE7Ci8vIC8vICAgICBzZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19CUk9BRENBU1QsICZvcCwgc2l6ZW9mKG9wKSk7CgoKLy8gICAgIC8vIOWIm+W7uuS4gOS4quW5v+aSreeahOWcsOWdgAovLyAgICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci8vICAgICBhZGRyLnNpbl9mYW1pbHkgID1BRl9JTkVUOwovLyAgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKDk5OTkpOwovLyAgICAgaW5ldF9wdG9uKEFGX0lORVQsICIxOTIuMTY4LjEwLjI1NSIsICZhZGRyLnNpbl9hZGRyLnNfYWRkcik7Ci8vICAgICAvLyDkvb/nlKjlub/mkq3nmoTml7blgJnvvIzmnI3liqHnq6/kuI3pnIDopoHnu5HlrpoKLy8gICAgIC8vIGludCByZXQgPSBiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSk7Ci8vICAgICAvLyBpZiAoLTEgPT0gcmV0KSB7Ci8vICAgICAvLyAgICAgcGVycm9yKCLojYnmi5/lkJdiaW5kIik7Ci8vICAgICAvLyAgICAgZXhpdCgtMSk7Ci8vICAgICAvLyB9Ci8vICAgICAvLyDpgJrkv6EKLy8gICAgIGludCBudW0gPSAwOwovLyAgICAgd2hpbGUoMSkgewovLyAgICAgICAgIC8vIGNoYXIgcmVjdmJ1ZlsxMjhdOwovLyAgICAgICAgIC8vIGNoYXIgaXBfYnVmWzE2XTsKLy8gICAgICAgICAvLyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpYWRkcjsKLy8gICAgICAgICAvLyBpbnQgbGVuID0gc2l6ZW9mKGNsaWFkZHIpOwovLyAgICAgICAgIC8vIGludCBudW0gPSByZWN2ZnJvbShmZCwgcmVjdmJ1Ziwgc2l6ZW9mKHJlY3ZidWYpLCAwLCAoc3RydWN0IHNvY2thZGRyICopJmNsaWFkZHIsIChzb2NrbGVuX3QqKSZsZW4pOwovLyAgICAgICAgIC8vIGlmICgtMSA9PSBudW0pIHsKLy8gICAgICAgICAvLyAgICAgcGVycm9yKCLojYnmi5/lkJdyZWN2ZnJvbSIpOwovLyAgICAgICAgIC8vICAgICBleGl0KC0xKTsKLy8gICAgICAgICAvLyB9Ci8vICAgICAgICAgLy8gcHJpbnRmKCLlrqLmiLfnq69JUO+8miVzLCDnq6/lj6PvvJolZFxuIiwgCi8vICAgICAgICAgLy8gICAgIGluZXRfbnRvcChBRl9JTkVULCAmY2xpYWRkci5zaW5fYWRkci5zX2FkZHIsIGlwX2J1Ziwgc2l6ZW9mKGlwX2J1ZikpLCAKLy8gICAgICAgICAvLyAgICAgbnRvaHMoY2xpYWRkci5zaW5fcG9ydCkKLy8gICAgICAgICAvLyAgICAgKTsKLy8gICAgICAgICAvLyBwcmludGYoIuaOpeaUtuWIsOeahOaVsOaNru+8miVzXG4iLCByZWN2YnVmKTsKLy8gY2hhciBzZW5kYnVmWzEyOF07Ci8vIHNwcmludGYoc2VuZGJ1ZiwiSGVsbG8g5Li05r28JWRcbiIsIG51bSsrKTsKCi8vICAgICAgICAgLy8g5Y+R6YCB5pWw5o2uCi8vICAgICAgICAgc2VuZHRvKGZkLCBzZW5kYnVmLCBzdHJsZW4oc2VuZGJ1ZikrMSwgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpOwovLyAgICAgICAgIHByaW50Zigi5bm/5pKt55qE5pWw5o2uXG4iKTsKLy8gICAgICAgICBzbGVlcCgxKTsKLy8gICAgIH0KLy8gICAgIGNsb3NlKGZkKTsKLy8gICAgIHJldHVybiAwOwoKLy8gfQoKLy8gLy8gICAgIC8vIHNlbmR0bwovLyAvLyAgICAgLy8gcmVjZWl2ZV9mcm9tCi8vIC8vICAgICBpbnQgZmQgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgMCk7Ci8vIC8vICAgICBpZiAoLTEgPT0gZmQpIHsKLy8gLy8gICAgICAgICBwZXJyb3IoIuiNieaLn+WQl3NvY2tldCIpOwovLyAvLyAgICAgICAgIGV4aXQoLTEpOwovLyAvLyAgICAgfQovLyAvLyAgICAgLy/nu5HlrpoKLy8gLy8gICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwovLyAvLyAgICAgYWRkci5zaW5fZmFtaWx5ICA9QUZfSU5FVDsKLy8gLy8gICAgIGFkZHIuc2luX2FkZHIuc19hZGRyID0gSU5BRERSX0FOWTsKLy8gLy8gICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyg5OTk5KTsKCgovLyAvLyAgICAgaW50IHJldCA9IGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKLy8gLy8gICAgIGlmICgtMSA9PSByZXQpIHsKLy8gLy8gICAgICAgICBwZXJyb3IoIuiNieaLn+WQl2JpbmQiKTsKLy8gLy8gICAgICAgICBleGl0KC0xKTsKLy8gLy8gICAgIH0KLy8gLy8gICAgIC8vIOmAmuS/oQovLyAvLyAgICAgd2hpbGUoMSkgewovLyAvLyAgICAgICAgIGNoYXIgcmVjdmJ1ZlsxMjhdOwovLyAvLyAgICAgICAgIGNoYXIgaXBfYnVmWzE2XTsKLy8gLy8gICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpYWRkcjsKLy8gLy8gICAgICAgICBpbnQgbGVuID0gc2l6ZW9mKGNsaWFkZHIpOwovLyAvLyAgICAgICAgIGludCBudW0gPSByZWN2ZnJvbShmZCwgcmVjdmJ1Ziwgc2l6ZW9mKHJlY3ZidWYpLCAwLCAoc3RydWN0IHNvY2thZGRyICopJmNsaWFkZHIsIChzb2NrbGVuX3QqKSZsZW4pOwovLyAvLyAgICAgICAgIGlmICgtMSA9PSBudW0pIHsKLy8gLy8gICAgICAgICAgICAgcGVycm9yKCLojYnmi5/lkJdyZWN2ZnJvbSIpOwovLyAvLyAgICAgICAgICAgICBleGl0KC0xKTsKLy8gLy8gICAgICAgICB9Ci8vIC8vICAgICAgICAgcHJpbnRmKCLlrqLmiLfnq69JUO+8miVzLCDnq6/lj6PvvJolZFxuIiwgCi8vIC8vICAgICAgICAgICAgIGluZXRfbnRvcChBRl9JTkVULCAmY2xpYWRkci5zaW5fYWRkci5zX2FkZHIsIGlwX2J1Ziwgc2l6ZW9mKGlwX2J1ZikpLCAKLy8gLy8gICAgICAgICAgICAgbnRvaHMoY2xpYWRkci5zaW5fcG9ydCkKLy8gLy8gICAgICAgICAgICAgKTsKLy8gLy8gICAgICAgICBwcmludGYoIuaOpeaUtuWIsOeahOaVsOaNru+8miVzXG4iLCByZWN2YnVmKTsKCi8vIC8vICAgICAgICAgLy8g5Y+R6YCB5pWw5o2uCi8vIC8vICAgICAgICAgc2VuZHRvKGZkLCByZWN2YnVmLCBzdHJsZW4ocmVjdmJ1ZikrMSwgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGlhZGRyLCBsZW4pOwovLyAvLyAgICAgfQovLyAvLyAgICAgY2xvc2UoZmQpOwovLyAvLyAgICAgcmV0dXJuIDA7Ci8vIC8vIH0KLy8gLy8gICAgIC8vIGVwb2xs55qE5bel5L2c5qih5byPCi8vIC8vICAgICAvLyBsdCAgbGV2ZWwgdHJpZ2dlciAg5rC05bmz6Kem5Y+R5qih5byPCi8vIC8vICAgICAvLyBldCAgZWRnZSB0cmlnZ2VyIOi+uee8mOinpuWPkQovLyAvLyAgICAgLy8gbHTmqKHlvI/mmK/pu5jorqTnmoQKLy8gLy8gICAgIC8vIGV05piv6auY6YCf5bel5L2c5pa55byPCi8vIC8vICAgICAvLyDliY3ogIXkvJrkuIDnm7TpgJrnn6XvvIzlkI7ogIXlj6rkvJrpgJrnn6XkuIDmrKHvvIzlpoLmnpzkvaDnvJPlhrLljLrph4zpnaLnmoTmlbDmja7msqHor7vlrozvvIzkuZ/kuI3kvJrlho3pgJrnn6XkuoYKLy8gLy8gICAgIC8vIOWQjuiAheavlOi+g+mrmOaViO+8jOS9huaYr+mcgOimgeino+WGs3JlYWTpmLvloZ7nmoTpl67popgKCiAgICAKLy8gLy8gICAgIC8qKgovLyAvLyAgKiBlcG9sbOeahOWOn+eQhgovLyAvLyAgKiBlcG9sbF9jcmVhdGUoKeWHveaVsOS8muWcqOWGheaguOWMuuWIhumFjeS4gOWdl+WGheWtmAovLyAvLyAgKiBlcG9sbC0+ZXZlbnQgcG9sbAovLyAvLyAgKiDov5Tlm57lgLzmmK/kuIDkuKrmlofku7bmj4/ov7DnrKYKLy8gLy8gICogc3RydWN0IGV2ZW50cG9sbCB7Ci8vIC8vICAqICAuLi4KLy8gLy8gICogIHN0cnVjdCByYl9yb290IHJicjsgLy/nuqLpu5HmoJEKLy8gLy8gICogIHN0cnVjdCBsaXN0X2hlYWQgcmRsaXN0OyAvLyByZWFkeSBsaXN0Ci8vIC8vICAqICAuLi4KLy8gLy8gICogfQovLyAvLyAgKiDnm7TmjqXmk43kvZzlhoXmoLjmgIHnmoTmlbDmja7vvIzkuI3nlKjku47nlKjmiLfmgIHlkozlhoXmoLjmgIHmnaXlm57liIfmjaLkuoYKLy8gLy8gICogCi8vIC8vICAqIGVwb2xsY3RsIAovLyAvLyAgKiAKLy8gLy8gICog55u05o6l5Zyo5YaF5qC45Lit5byA6L6f5LiA5Z2X5YaF5a2Y77yM5bCx5LiN55So5p2l5Zue5YiH5o2i5LqGCi8vIC8vICAqIOaPkOmrmOaViOeOhwovLyAvLyAgKiDnuqLpu5HmoJEgICDkuIDnp43pq5jmlYjnmoTmlbDmja7nu5PmnoQKLy8gLy8gICogCi8vIC8vICAqIOS5i+WJjeaYr+e6v+aAp+aVsOe7hOe7k+aehO+8jOeOsOWcqOaYr+e6oum7keagkee7k+aehAovLyAvLyAgKiAKLy8gLy8gICogZXBvbGxfY3RsKGVwZmQsIEVQT0xMX0NUTF9BREQsIGxmZCwgJmV2KTsKLy8gLy8gICogCi8vIC8vICAqIOesrOS4gOS4quWPguaVsOaYr2NyZWF0ZeaWueazleeahOi/lOWbnuWAvAovLyAvLyAgKiBFUE9MTF9DVExfQUREIOihqOekuui/m+ihjOa3u+WKoOaTjeS9nAovLyAvLyAgKiBsZmTmmK/opoHmo4DmtYvnmoTmj4/ov7DnrKYKLy8gLy8gICog56ys5Zub5Liq5Y+C5pWwZXbvvIzlp5TmiZjlhoXmoLjmo4DmtYvnmoTkuovku7YKLy8gLy8gICogCi8vIC8vICAqIHN0cnVjdCBlcG9sbF9ldmVudCBldjsKLy8gLy8gICogZXYuZXZlbnRzID0gRVBPTExJTiAvLyDor7vkuovku7YKLy8gLy8gICogZXYuZGF0YS5mZCA9IGxmZCAvLyDopoHmo4DmtYvnmoTmlofku7bmj4/ov7DnrKbnmoTmjIcKLy8gLy8gICogCi8vIC8vICAqIGVwb2xsX3dhaXQoZXBmZCkgLy8g6K+l5pa55rOV5Lya5bCGcmRsaXN05Lit55qE5pWw5o2u5ou36LSd5Zue55So5oi35oCBCi8vIC8vICAqIGZvciAoKXsKLy8gLy8gICogIAovLyAvLyAgKiB9Ci8vIC8vICAqIAovLyAvLyAgKiDnm7TmjqXpgY3ljobov5Tlm57nmoTmlbDmja7lsLHooYzkuobvvIzov5Tlm57nmoTnu5PmnpzmmK/lhbfkvZPlk6rlh6DkuKroioLngrnnmoTnirbmgIHlj5HnlJ/kuobmlLnlj5gKLy8gLy8gICogCi8vIC8vICAqIHJkbGlzdOaYr+S4gOS4quWPjOmTvuihqAovLyAvLyAgKiAKLy8gLy8gICogCi8vIC8vICAqIAovLyAvLyAgKi8KLy8gLy8gLy8g5Yib5bu65LiA5Liq5paw55qEZXBvbGzlrp7kvovvvIzlnKjlhoXmoLjkuK3liJvlu7rkuIDkuKrmlbDmja7vvIzov5nkuKrkuK3mnInkuKTkuKrmr5TovoPph43opoHnmoTmiJDlkZgKLy8gLy8gLy8g5LiA5Liq5piv6ZyA6KaB5qOA5rWL5paH5Lu25o+P6L+w56ym55qE5pWw5o2u77yI57qi6buR5qCR77yJ77yM5Y+m5LiA5Liq5piv5bCx5bqP5YiX6KGo77yM55So5LqO5a2Y5pS+5pWw5o2u5Y+R55Sf5pS55Y+Y55qE5paH5Lu25o+P6L+w56ym6ZuG5ZCI77yI5Y+M5ZCR6ZO+6KGo77yJCgovLyAvLyAvLyDlj4LmlbAgc2l6ZSDnm67liY3or6Xlj4LmlbDmmK/msqHmnInmhI/kuYnnmoTvvIzpmo/kvr/lhpnkuIDkuKrmlbDlsLHooYzvvIjpnZ4w77yJCgovLyAvLyAvLyDov5Tlm57lgLwgICA+MCDooajnpLrmlofku7bmj4/ov7DnrKbvvIzmmK/nlKjkuo7mk43kvZxlcG9sbOWunuS+i+eahCAgICAg5aSx6LSl6L+U5ZueLTEKCgoKLy8gLy8gLy8gIGludCByZXQgPSBlcG9sbF9jcmVhdGUoaW50IHNpemUpOwovLyAvLyAvLyDlr7llcG9sbOWunuS+i+i/m+ihjOeuoeeQhgovLyAvLyAvLyBlcG9sbF9jdGzvvIhpbnQgZXBmZCwgaW50IG9wLCBpbnQgZmQgLCBzdHJ1Y3QgZXBvbGxfZW5ldnQqIGV2ZW5077yJCi8vIC8vIC8vIGVwb2xsX2N0bF9hZGQgIGVwb2xsX2N0bF9tb2QgICBlcG9sbF9jdGxfZGVsCi8vIC8vIC8vIGZkICDluLjop4HnmoRlcG9sbOajgOa1i+S6i+S7tiAgIGVwb2xsSU4gIGVwb2xsb3V0IGVwb2xsZXJyCi8vIC8vIC8vIGVwb2xsX2N0bCAgIOa3u+WKoOaWh+S7tuaPj+i/sOespuS/oeaBryAgIOWIoOmZpCAg5L+u5pS5562J55qECi8vIC8vIC8vIOS/ruaUue+8jOWPr+S7peS/ruaUueimgeajgOa1i+eahOS6i+S7tu+8jOavlOWmguS7peWJjeimgeajgOa1i+ivu++8jOaIkeS7rOWPr+S7peS/ruaUueS4uuajgOa1i+WGmQovLyAvLyAgICAgLy8gCiAgICAKLy8gLy8gICAgIC8vIOajgOa1i+WHveaVsAovLyAvLyAgICAgLy8gZXBvbGzigJTigJR3YWl077yJ77yIaW50IGVwZmQsIHN0cnVjdCBlcG9sbF9ldmVudCAqZXZlbnRzLCBpbnQgbWF4ZXZlbnRzLCBpbnQgdGltZW91dHPvvInigJQKLy8gLy8gICAgIC8vZXBmZCAgICAgICBlcG9sbOWunuS+i+WvueW6lOeahOaWh+S7tuaPj+i/sOespgovLyAvLyAvLyBldmVudHPkvKDlh7rlj4LmlbAgICDvvIzph4zpnaLkv53lrZjnmoTmnInlj5HnlJ/kuoblj5jljJbnmoTmlofku7bmj4/ov7DnrKbkv6Hmga/vvIjlk6rlh6DkuKrlj5HnlJ/kuoblj5jljJbvvIzlsLHov5Tlm57lk6rlh6DkuKrvvIkKLy8gLy8gLy8gbWF4ZXZlbnRzICAg56ys5LqM5Liq5Y+C5pWw57uT5p6E5L2T5pWw57uE55qE5aSn5bCPCi8vIC8vIC8vIHRpbWVvdXTpmLvloZ7ml7bpl7QgICAgIDDooajnpLrkuI3pmLvloZ7jgIItMeihqOekuumYu+WhniAgIOebtOWIsOajgOa1i+WIsGZk5pWw5o2u5Y+R55Sf5Y+Y5YyWICDlsLHkvJrop6PpmaTpmLvloZ4KCi8vIC8vIC8vICDjgIswIOihqOekuumYu+WhnueahOaXtumVv++8iOWNleS9jeaYr+avq+enku+8iQovLyAvLyAvLyDov5Tlm57lgLzvvIzov5Tlm57lj5HnlJ/lj5jljJbnmoTmlofku7bmj4/ov7DnrKbnmoTkuKrmlbAKCgovL

相关文章