bug-mailutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bugs and propositions for pop3d (fwd)


From: Alain Magloire
Subject: bugs and propositions for pop3d (fwd)
Date: Mon, 23 Apr 2001 13:00:50 -0400 (EDT)

Bonjour

   For some reason, I never got this message??  It has been forwaded to me.
I'll take a closer look later.  But many of the points seem to be very
good.  Thanks for taking the time .. later,


Forwarded message:
> ---------- Forwarded message ----------
> Date: Sat, 21 Apr 2001 20:42:27 +0300 (EET DST)
> From: Sergey Poznyakoff <address@hidden>
> To: address@hidden
> Subject: bugs and propositions for pop3d 
> 
> Hello,
> 
> I am trying to test pop3d from mailutils in real production environment.
> The system is GNU/Linux with 2.2.6 kernel.
> 
> While configuring/building I have discovered some bugs. Further,
> in the course of using the program I thought about some improvements
> which may be useful. I do not suppose, though, that these improvements
> agree with the authors' planes, so I am attaching to this message
> two patch files. First of them contains proposed patches for the
> bugs that prevented program from compiling/functioning. The second
> one contains all the modifications I did so far. If you would wish to
> try them, please use -p0 -l options to patch. I feel mailutils is a very
> useful package, and would gladly contribute to its development.
> 
> I would like to discuss some difficulties I have encountered.
> The essential fixes (those in attachment #1) address the following
> issues:
> 
>  1. ENOTSUP and MAP_FAILED used in some sources may not be defined on
>     some systems.
>  2. ARGPINCS= in configure.in gets assigned a relative path, due
>     to which the compilation fails if the package is configured with
>     --srcdir=<path> option.
>  3. Child process in pop3d/pop3d.c lacks call to exit(), so if
>     pop3d is run as a daemon, any child after exiting from
>     pop3_mainloop  tries to accept() from already closed socket
>     and issues spurious error messages.
>  4. pop3_sigchld() lacks signal() call, due to which the signal handler
>     gets cleared after first SIGCHLD and all subsequent children, when
>     finished, just hang around like zombies.
> 
> 
> The proposed `improvements' (though the term may be argued, of course :)
> address the following:
> 
>  1. Several sources from mailbox subdirectory call fprintf(stderr,...)
>     to issue error messages. As the stderr usually gets connected to
>     the output socket, the client program receives all these error
>     messages and gets confused, since they do not start with
>     rfc-compliant +OK, -ERR keywords. So I have added a module
>     error.c and changed all these fprintf's to error()'s. Actual
>     function that ouputs the messages can be supplied by the
>     application using error_set_print() call. Source files
>     mailbox/error.c and include/mailutils/error.h are contained in
>     attachments 3 and 4.
>  2. System administrators often prefere to have more information about
>     unsuccessfull authentications. I have added more verbose logging
>     to pop3d/user.c. Both failed attempts and possible account probes
>     (USER immediately followed by QUIT) are logged.
>  3. It is often convenient to separate log outputs from POP and SMTP
>     servers. So, I have added --with-log-facility flag which allows
>     to specify to which log facility the logging output should be
>     directed.
>  4. I have also made pop3d to be less verbose about its WELCOME
>     prompt. When the symbol TERSE_MODE is defined, pop3d introduces
>     itself just as
>          +OK POP3 ready <apop_hash>     
>     insead of divulging its type and version. This is a bit paranoid,
>     but it is better to be on the safe side...
> 
> Finally, what seems to be a real problem is simultaneous access to
> the maildrop. All locking/unlocking works just fine, but I have
> come across the following situation: two sessions access the same
> mailbox simultaneously, both do LIST, then one of them does
> DELE on some message, then QUIT. The remaining session does a RETR
> and dies miserably, since its internal indices are already out of sync
> with the real maildrop contents. The comment on mbox_is_updated()
> function addresses this but the function itself is never called.
> So I added a call to mailbox_is_updated() to the pop3_mainloop()
> function just before the processing of a keyword. Also I have added
> ERR_MBOX_SYNC define to help handle the situation when
> mbox_is_updated() bails out.
> After these changes, the second session just gets the message
> 
>       -ERR Mailbox updated by other party or corrupt
> 
> and the connection is closed. This behaviour seems to be compatible
> with RFC, but maybe it would be better to deny simultaneous
> accesses altogether?      
> 
> Kind regards,
> Sergey Poznyakoff
> GNU Radius developer.
> ---559023410-851401618-987874947=:8720
> Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=essential
> Content-Transfer-Encoding: BASE64
> Content-ID: <address@hidden>
> Content-Description: diffs.essential
> 
> SW5kZXg6IGFjY29uZmlnLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD
> UyBmaWxlOiAvY3ZzL21haWx1dGlscy9hY2NvbmZpZy5oLHYNCnJldHJpZXZp
> bmcgcmV2aXNpb24gMS42DQpkaWZmIC1jIC1iIC13IC1yMS42IGFjY29uZmln
> LmgNCioqKiBhY2NvbmZpZy5oCTIwMDEvMDEvMjAgMDQ6MzQ6MzgJMS42DQot
> LS0gYWNjb25maWcuaAkyMDAxLzA0LzIxIDE1OjEwOjM3DQoqKioqKioqKioq
> KioqKioNCioqKiAyOSwzMSAqKioqDQotLS0gMjksMzYgLS0tLQ0KICANCiAg
> LyogRGVmaW5lIGlmIHVzaW5nIGxpYnJlYWRsaW5lICovDQogICN1bmRlZiBX
> SVRIX1JFQURMSU5FDQorIA0KKyBAQk9UVE9NQA0KKyANCisgI3VuZGVmIExP
> R19GQUNJTElUWQ0KKyANCkluZGV4OiBjb25maWd1cmUuaW4NCj09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL21haWx1dGlscy9jb25m
> aWd1cmUuaW4sdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQwDQpkaWZmIC1j
> IC1iIC13IC1yMS40MCBjb25maWd1cmUuaW4NCioqKiBjb25maWd1cmUuaW4J
> MjAwMS8wNC8yMCAwNDozNzo0NwkxLjQwDQotLS0gY29uZmlndXJlLmluCTIw
> MDEvMDQvMjEgMTU6MTA6MzcNCioqKioqKioqKioqKioqKg0KKioqIDQyLDQ3
> ICoqKioNCi0tLSA0Miw1NyAtLS0tDQogICAgKikgICBBQ19NU0dfRVJST1Io
> YmFkIHZhbHVlICR7d2l0aHZhbH0gZm9yIC0td2l0aC1kYikgOzsNCiAgICBl
> c2FjXSxbdXNlZGIyPW5vXSkNCiAgDQorIEFDX01TR19DSEVDS0lORyhmb3Ig
> bG9nIGZhY2lsaXR5KSANCisgbG9nX2ZhY2lsaXR5PSJMT0dfTUFJTCINCisg
> QUNfQVJHX1dJVEgobG9nLWZhY2lsaXR5LA0KKyAgIFsgIC0td2l0aC1sb2ct
> ZmFjaWxpdHk9ZmFjaWxpdHkgICBlbmFibGUgbG9nZ2luZyB0byB0aGUgZ2l2
> ZW4gZmFjaWxpdHldLA0KKyAgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8
> c3lzbG9nLmg+XSwNCisgICAgICAgICAgICAgICAgICAgaW50IGxmID0gJHdp
> dGh2YWwsDQorICAgICAgICAgICAgICAgICAgIGxvZ19mYWNpbGl0eT0kd2l0
> aHZhbCkpDQorIEFDX0RFRklORV9VTlFVT1RFRChMT0dfRkFDSUxJVFksICRs
> b2dfZmFjaWxpdHkpDQorIEFDX01TR19SRVNVTFQoJGxvZ19mYWNpbGl0eSkN
> CisgDQogIGRubCBDaGVjayBmb3IgaGVhZGVycw0KICBBQ19IRUFERVJfU1RE
> Qw0KICBBQ19IRUFERVJfRElSRU5UDQoqKioqKioqKioqKioqKioNCioqKiA3
> OSw4NSAqKioqDQogIAlBQ19SRVBMQUNFX0ZVTkNTKHN0cm5kdXAgc3Rybmxl
> biBzdHJjaHJudWwpDQogIAlBUkdQTElCUz0iLi4vYXJncC9saWJhcmdwLmEi
> DQogIAlBUkdQTElCPSJsaWJhcmdwLmEiDQohIAlBUkdQSU5DUz0iLUkuLi9h
> cmdwIg0KICAJQUNfU1VCU1QoQVJHUExJQlMpDQogIAlBQ19TVUJTVChBUkdQ
> TElCKQ0KICAJQUNfU1VCU1QoQVJHUElOQ1MpDQotLS0gODksOTUgLS0tLQ0K
> ICAJQUNfUkVQTEFDRV9GVU5DUyhzdHJuZHVwIHN0cm5sZW4gc3RyY2hybnVs
> KQ0KICAJQVJHUExJQlM9Ii4uL2FyZ3AvbGliYXJncC5hIg0KICAJQVJHUExJ
> Qj0ibGliYXJncC5hIg0KISAJQVJHUElOQ1M9Ii1JXCQodG9wX3NyY2Rpcikv
> YXJncCINCiAgCUFDX1NVQlNUKEFSR1BMSUJTKQ0KICAJQUNfU1VCU1QoQVJH
> UExJQikNCiAgCUFDX1NVQlNUKEFSR1BJTkNTKQ0KSW5kZXg6IGluY2x1ZGUv
> bWFpbHV0aWxzL3N0cmVhbS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS
> Q1MgZmlsZTogL2N2cy9tYWlsdXRpbHMvaW5jbHVkZS9tYWlsdXRpbHMvc3Ry
> ZWFtLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjcNCmRpZmYgLWMgLWIg
> LXcgLXIxLjcgc3RyZWFtLmgNCioqKiBpbmNsdWRlL21haWx1dGlscy9zdHJl
> YW0uaAkyMDAxLzA0LzE4IDA0OjM0OjQyCTEuNw0KLS0tIGluY2x1ZGUvbWFp
> bHV0aWxzL3N0cmVhbS5oCTIwMDEvMDQvMjEgMTU6MTA6NTANCioqKioqKioq
> KioqKioqKg0KKioqIDM0LDM5ICoqKioNCi0tLSAzNCw0MyAtLS0tDQogICMg
> ZW5kaWYNCiAgI2VuZGlmIC8qX19QICovDQogIA0KKyAjaWZuZGVmIEVOT1RT
> VVANCisgIyBkZWZpbmUgRU5PVFNVUCBFT1BOT1RTVVBQDQorICNlbmRpZg0K
> KyANCiAgc3RydWN0IF9zdHJlYW07DQogIHR5cGVkZWYgc3RydWN0IF9zdHJl
> YW0gKnN0cmVhbV90Ow0KICANCkluZGV4OiBtYWlsYm94L21hcGZpbGVfc3Ry
> ZWFtLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3Zz
> L21haWx1dGlscy9tYWlsYm94L21hcGZpbGVfc3RyZWFtLmMsdg0KcmV0cmll
> dmluZyByZXZpc2lvbiAxLjEwDQpkaWZmIC1jIC1iIC13IC1yMS4xMCBtYXBm
> aWxlX3N0cmVhbS5jDQoqKiogbWFpbGJveC9tYXBmaWxlX3N0cmVhbS5jCTIw
> MDEvMDQvMTggMDQ6MzQ6NDIJMS4xMA0KLS0tIG1haWxib3gvbWFwZmlsZV9z
> dHJlYW0uYwkyMDAxLzA0LzIxIDE1OjExOjAzDQoqKioqKioqKioqKioqKioN
> CioqKiAzNCwzOSAqKioqDQotLS0gMzQsNDIgLS0tLQ0KICAjaWZkZWYgX1BP
> U0lYX01BUFBFRF9GSUxFUw0KICAjaW5jbHVkZSA8c3lzL21tYW4uaD4NCiAg
> DQorICNpZm5kZWYgTUFQX0ZBSUxFRA0KKyAjIGRlZmluZSBNQVBfRkFJTEVE
> ICh2b2lkKiktMQ0KKyAjZW5kaWYNCiAgDQogIHN0cnVjdCBfbWFwZmlsZV9z
> dHJlYW0NCiAgew0KSW5kZXg6IG1haWxib3gvbWJ4X21ib3guYw0KPT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL21h
> aWxib3gvbWJ4X21ib3guYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDMN
> CmRpZmYgLWMgLWIgLXcgLXIxLjQzIG1ieF9tYm94LmMNCioqKiBtYWlsYm94
> L21ieF9tYm94LmMJMjAwMS8wNC8xNyAwMzozMToxOQkxLjQzDQotLS0gbWFp
> bGJveC9tYnhfbWJveC5jCTIwMDEvMDQvMjEgMTU6MTE6MDUNCioqKioqKioq
> KioqKioqKg0KKioqIDQ3NSw0OTEgKioqKg0KICB7DQogICAgb2ZmX3Qgc2l6
> ZSA9IDA7DQogICAgbWJveF9kYXRhX3QgbXVkID0gbWFpbGJveC0+ZGF0YTsN
> CiEgICBpZiAoc3RyZWFtX3NpemUgKG1haWxib3gtPnN0cmVhbSwgJnNpemUp
> ICE9IDApDQogICAgICByZXR1cm4gMDsNCiAgICBpZiAoc2l6ZSA8IG11ZC0+
> c2l6ZSkNCiAgICAgIHsNCiAgICAgICAgb2JzZXJ2YWJsZV9ub3RpZnkgKG1h
> aWxib3gtPm9ic2VydmFibGUsIE1VX0VWVF9NQUlMQk9YX0NPUlJVUFQpOw0K
> ICAgICAgICAvKiBBbmQgYmUgdmVyYm9zZS4gID8gKi8NCiAgICAgICAgZnBy
> aW50ZiAoc3RkZXJyLCAiKiBCQUQgOiBNYWlsYm94IGNvcnJ1cHRlZCwgc2hy
> YW5rIHNpemVcbiIpOw0KICAgICAgICAvKiBGSVhNRTogc2hvdWxkIEkgY3Jh
> c2guICAqLw0KICAgICAgICByZXR1cm4gMTsNCiAgICAgIH0NCiEgICByZXR1
> cm4gKG11ZC0+c2l6ZSA9PSBzaXplKTsNCiAgfQ0KICANCiAgLyogVHJ5IHRv
> IGNyZWF0ZSBhbiB1bmlxIGZpbGUsIHdlIG5vIHJhY2UgY29uZGl0aW9ucy4g
> ICAqLw0KLS0tIDQ3NSw0OTEgLS0tLQ0KICB7DQogICAgb2ZmX3Qgc2l6ZSA9
> IDA7DQogICAgbWJveF9kYXRhX3QgbXVkID0gbWFpbGJveC0+ZGF0YTsNCiEg
> ICBpZiAobXVkLT5zaXplID09IDAgfHwgc3RyZWFtX3NpemUgKG1haWxib3gt
> PnN0cmVhbSwgJnNpemUpICE9IDApDQogICAgICByZXR1cm4gMDsNCiAgICBp
> ZiAoc2l6ZSA8IG11ZC0+c2l6ZSkNCiAgICAgIHsNCiAgICAgICAgb2JzZXJ2
> YWJsZV9ub3RpZnkgKG1haWxib3gtPm9ic2VydmFibGUsIE1VX0VWVF9NQUlM
> Qk9YX0NPUlJVUFQpOw0KICAgICAgICAvKiBBbmQgYmUgdmVyYm9zZS4gID8g
> Ki8NCiAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKiBCQUQgOiBNYWlsYm94
> IGNvcnJ1cHRlZCwgc2hyYW5rIHNpemVcbiIpOw0KICAgICAgICAvKiBGSVhN
> RTogc2hvdWxkIEkgY3Jhc2guICAqLw0KICAgICAgICByZXR1cm4gMTsNCiAg
> ICAgIH0NCiEgICByZXR1cm4gKG11ZC0+c2l6ZSAhPSBzaXplKTsNCiAgfQ0K
> ICANCiAgLyogVHJ5IHRvIGNyZWF0ZSBhbiB1bmlxIGZpbGUsIHdlIG5vIHJh
> Y2UgY29uZGl0aW9ucy4gICAqLw0KSW5kZXg6IHBvcDNkL2V4dHJhLmMNCj09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL21haWx1dGls
> cy9wb3AzZC9leHRyYS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMA0K
> ZGlmZiAtYyAtYiAtdyAtcjEuMTAgZXh0cmEuYw0KKioqIHBvcDNkL2V4dHJh
> LmMJMjAwMS8wMi8wMiAwNDowMDoxMAkxLjEwDQotLS0gcG9wM2QvZXh0cmEu
> YwkyMDAxLzA0LzIxIDE1OjExOjEwDQoqKioqKioqKioqKioqKioNCioqKiAx
> MTgsMTIzICoqKioNCi0tLSAxMTgsMTI4IC0tLS0NCiAgICAgICAgc3lzbG9n
> IChMT0dfSU5GTywgIk5vIHNvY2tldCB0byBzZW5kIHRvIik7DQogICAgICAg
> IGJyZWFrOw0KICANCisgICAgIGNhc2UgRVJSX01CT1hfU1lOQzoNCisgICAg
> ICAgc3lzbG9nKExPR19FUlIsICJtYWlsYm94IHdhcyB1cGRhdGVkIGJ5IG90
> aGVyIHBhcnR5OiAlcyIsIHVzZXJuYW1lKTsNCisgICAgICAgZnByaW50Zihv
> ZmlsZSwgIi1FUlIgTWFpbGJveCB1cGRhdGVkIGJ5IG90aGVyIHBhcnR5IG9y
> IGNvcnJ1cHRcclxuIik7DQorICAgICAgIGJyZWFrOw0KKyANCiAgICAgIGRl
> ZmF1bHQ6DQogICAgICAgIGZwcmludGYgKG9maWxlLCAiLUVSUiBRdWl0dGlu
> ZyAocmVhc29uIHVua25vd24pXHJcbiIpOw0KICAgICAgICBzeXNsb2cgKExP
> R19FUlIsICJVbmtub3duIHF1aXQiKTsNCioqKioqKioqKioqKioqKg0KKioq
> IDE1NiwxNjIgKioqKg0KICB2b2lkDQogIHBvcDNfc2lnbmFsIChpbnQgc2ln
> bm8pDQogIHsNCiEgICAodm9pZClzaWdubzsNCiAgICBwb3AzX2FicXVpdCAo
> RVJSX1NJR05BTCk7DQogIH0NCiAgDQotLS0gMTYxLDE2NyAtLS0tDQogIHZv
> aWQNCiAgcG9wM19zaWduYWwgKGludCBzaWdubykNCiAgew0KISAgIHN5c2xv
> ZyhMT0dfQ1JJVCwgImdvdCBzaWduYWwgJWQiLCBzaWdubyk7CQ0KICAgIHBv
> cDNfYWJxdWl0IChFUlJfU0lHTkFMKTsNCiAgfQ0KICANCkluZGV4OiBwb3Az
> ZC9wb3AzZC5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
> L2N2cy9tYWlsdXRpbHMvcG9wM2QvcG9wM2QuYyx2DQpyZXRyaWV2aW5nIHJl
> dmlzaW9uIDEuMjINCmRpZmYgLWMgLWIgLXcgLXIxLjIyIHBvcDNkLmMNCioq
> KiBwb3AzZC9wb3AzZC5jCTIwMDEvMDQvMTYgMDI6MjY6MzEJMS4yMg0KLS0t
> IHBvcDNkL3BvcDNkLmMJMjAwMS8wNC8yMSAxNToxMToxMA0KKioqKioqKioq
> KioqKioqDQoqKiogMjA1LDIxMCAqKioqDQotLS0gMjA5LDIxNiAtLS0tDQog
> ICAgY2hhciAqYnVmLCAqYXJnLCAqY21kOw0KICAgIHN0cnVjdCBob3N0ZW50
> ICpodGJ1ZjsNCiAgICBjaGFyICpsb2NhbF9ob3N0bmFtZTsNCisgICBzdHJ1
> Y3Qgc29ja2FkZHJfaW4gY3M7DQorICAgaW50IGxlbjsNCiAgDQogICAgaWZp
> bGUgPSBpbmZpbGU7DQogICAgb2ZpbGUgPSBmZG9wZW4gKG91dGZpbGUsICJ3
> Iik7DQoqKioqKioqKioqKioqKioNCioqKiAyMTMsMjIwICoqKioNCiAgICBz
> dGF0ZSA9IEFVVEhPUklaQVRJT047DQogICAgY3Vycl90aW1lID0gdGltZSAo
> TlVMTCk7DQogIA0KISAgIC8qIEZJWE1FOiAgUmV0cmVpdmUgaG9zdG5hbWUg
> d2l0aCBnZXRwZWVybmFtZSgpIGFuZCBsb2cuICAqLw0KISAgIHN5c2xvZyAo
> TE9HX0lORk8sICJJbmNvbWluZyBjb25uZWN0aW9uIG9wZW5lZCIpOw0KICAN
> CiAgICAvKiBQcmVwYXJlIHRoZSBzaGFyZWQgc2VjcmV0IGZvciBBUE9QLiAg
> Ki8NCiAgICBsb2NhbF9ob3N0bmFtZSA9IG1hbGxvYyAoTUFYSE9TVE5BTUVM
> RU4gKyAxKTsNCi0tLSAyMTksMjMxIC0tLS0NCiAgICBzdGF0ZSA9IEFVVEhP
> UklaQVRJT047DQogICAgY3Vycl90aW1lID0gdGltZSAoTlVMTCk7DQogIA0K
> ISAgIC8qIGxvZyBpbmZvcm1hdGlvbiBvbiB0aGUgY29ubmVjdGluZyBjbGll
> bnQgKi8NCiEgICBsZW4gPSBzaXplb2YgY3M7DQohICAgaWYgKGdldHBlZXJu
> YW1lKGluZmlsZSwgKHN0cnVjdCBzb2NrYWRkciopJmNzLCAmbGVuKSA8IDAp
> IA0KISAgICAgICBzeXNsb2coTE9HX0VSUiwgImNhbid0IG9idGFpbiBJUCBh
> ZGRyZXNzIG9mIGNsaWVudDogJXMiLA0KISAgICAgICAgICAgICBzdHJlcnJv
> cihlcnJubykpOw0KISAgIGVsc2UNCiEgICAgICAgc3lzbG9nKExPR19JTkZP
> LCAiY29ubmVjdCBmcm9tICVzIiwgaW5ldF9udG9hKGNzLnNpbl9hZGRyKSk7
> DQogIAkgIA0KICAgIC8qIFByZXBhcmUgdGhlIHNoYXJlZCBzZWNyZXQgZm9y
> IEFQT1AuICAqLw0KICAgIGxvY2FsX2hvc3RuYW1lID0gbWFsbG9jIChNQVhI
> T1NUTkFNRUxFTiArIDEpOw0KKioqKioqKioqKioqKioqDQoqKiogMjQ4LDI1
> MyAqKioqDQotLS0gMjY0LDI3MiAtLS0tDQogICAgICAgIGNtZCA9IHBvcDNf
> Y21kIChidWYpOw0KICAgICAgICBhcmcgPSBwb3AzX2FyZ3MgKGJ1Zik7DQog
> IA0KKyAgICAgICBpZiAoc3RhdGUgPT0gVFJBTlNBQ1RJT04gJiYgbWFpbGJv
> eF9pc191cGRhdGVkIChtYm94KSkgDQorIAlwb3AzX2FicXVpdChFUlJfTUJP
> WF9TWU5DKTsNCisgICAgICAgDQogICAgICAgIGlmIChzdHJsZW4gKGFyZykg
> PiBQT1BfTUFYQ01ETEVOIHx8IHN0cmxlbiAoY21kKSA+IFBPUF9NQVhDTURM
> RU4pDQogIAlzdGF0dXMgPSBFUlJfVE9PX0xPTkc7DQogICAgICAgIGVsc2Ug
> aWYgKHN0cmxlbiAoY21kKSA+IDQpDQoqKioqKioqKioqKioqKioNCioqKiAz
> NTgsMzcyICoqKioNCi0tLSAzNzcsMzk1IC0tLS0NCiAgICAgIHsNCiAgICAg
> ICAgaWYgKGNoaWxkcmVuID4gbWF4Y2hpbGRyZW4pDQogICAgICAgICAgew0K
> KyAgICAgICAgICAgc3lzbG9nKExPR19FUlIsICJ0b28gbWFueSBjaGlsZHJl
> biIpOw0KICAgICAgICAgICAgcGF1c2UgKCk7DQogICAgICAgICAgICBjb250
> aW51ZTsNCiAgICAgICAgICB9DQorICAgICAgIA0KICAgICAgICBjb25uZmQg
> PSBhY2NlcHQgKGxpc3RlbmZkLCAoc3RydWN0IHNvY2thZGRyICopJmNsaWVu
> dCwgJnNpemUpOw0KICAgICAgICBpZiAoY29ubmZkID09IC0xKQ0KICAgICAg
> ICAgIHsNCiAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikNCiAgCSAg
> ICBjb250aW51ZTsNCiAgICAgICAgICAgIHN5c2xvZyAoTE9HX0VSUiwgImFj
> Y2VwdDogJXMiLCBzdHJlcnJvciAoZXJybm8pKTsNCiAgICAgICAgICAgIGV4
> aXQgKC0xKTsNCiAgICAgICAgICB9DQogIA0KKioqKioqKioqKioqKioqDQoq
> KiogMzc2LDM4MyAqKioqDQogICAgICAgIGVsc2UgaWYgKHBpZCA9PSAwKSAv
> KiBDaGlsZC4gICovDQogICAgICAgICAgew0KICAgICAgICAgICAgY2xvc2Ug
> KGxpc3RlbmZkKTsNCi0gCSAgLyogc3lzbG9nKCk7IEZJWE1FIGxvZyB0aGUg
> aW5mbyBvbiB0aGUgY29ubmVjdGlpbmcgY2xpZW50LiAgKi8NCiAgICAgICAg
> ICAgIHBvcDNfbWFpbmxvb3AgKGNvbm5mZCwgY29ubmZkKTsNCiAgICAgICAg
> ICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICB7DQotLS0gMzk5LDQwNiAt
> LS0tDQogICAgICAgIGVsc2UgaWYgKHBpZCA9PSAwKSAvKiBDaGlsZC4gICov
> DQogICAgICAgICAgew0KICAgICAgICAgICAgY2xvc2UgKGxpc3RlbmZkKTsN
> CiAgICAgICAgICAgIHBvcDNfbWFpbmxvb3AgKGNvbm5mZCwgY29ubmZkKTsN
> CisgCSAgZXhpdCgwKTsNCiAgICAgICAgICB9DQogICAgICAgIGVsc2UNCiAg
> ICAgICAgICB7DQpJbmRleDogcG9wM2QvcG9wM2QuaA0KPT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL3BvcDNkL3Bv
> cDNkLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE0DQpkaWZmIC1jIC1i
> IC13IC1yMS4xNCBwb3AzZC5oDQoqKiogcG9wM2QvcG9wM2QuaAkyMDAxLzA0
> LzE0IDIwOjE3OjI3CTEuMTQNCi0tLSBwb3AzZC9wb3AzZC5oCTIwMDEvMDQv
> MjEgMTU6MTE6MTANCioqKioqKioqKioqKioqKg0KKioqIDE1OCwxNjMgKioq
> Kg0KLS0tIDE1OCwxNjQgLS0tLQ0KICAjZGVmaW5lIEVSUl9OT19PRklMRSAg
> ICAxNA0KICAjZGVmaW5lIEVSUl9USU1FT1VUCTE1DQogICNkZWZpbmUgRVJS
> X1VOS05PV04JMTYNCisgI2RlZmluZSBFUlJfTUJPWF9TWU5DICAgMTcNCiAg
> DQogICNpZm5kZWYgX19QDQogICMgaWZkZWYgX19TVERDX18NCkluZGV4OiBw
> b3AzZC9zaWduYWwuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp
> bGU6IC9jdnMvbWFpbHV0aWxzL3BvcDNkL3NpZ25hbC5jLHYNCnJldHJpZXZp
> bmcgcmV2aXNpb24gMS4yDQpkaWZmIC1jIC1iIC13IC1yMS4yIHNpZ25hbC5j
> DQoqKiogcG9wM2Qvc2lnbmFsLmMJMjAwMS8wMS8xMSAwNDo0NjozNAkxLjIN
> Ci0tLSBwb3AzZC9zaWduYWwuYwkyMDAxLzA0LzIxIDE1OjExOjExDQoqKioq
> KioqKioqKioqKioNCioqKiA4LDE0ICoqKioNCiAgICBwaWRfdCBwaWQ7DQog
> ICAgaW50IHN0YXR1czsNCiAgDQotICAgKHZvaWQpc2lnbm87DQogICAgd2hp
> bGUgKCAocGlkID0gd2FpdHBpZCgtMSwgJnN0YXR1cywgV05PSEFORykpID4g
> MCkNCiAgICAgICAgLS1jaGlsZHJlbjsNCiAgfQ0KLS0tIDgsMTQgLS0tLQ0K
> ICAgIHBpZF90IHBpZDsNCiAgICBpbnQgc3RhdHVzOw0KICANCiAgICB3aGls
> ZSAoIChwaWQgPSB3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5HKSkgPiAw
> KQ0KICAgICAgICAtLWNoaWxkcmVuOw0KKyAgIHNpZ25hbChzaWdubywgcG9w
> M19zaWdjaGxkKTsNCiAgfQ0KSW5kZXg6IHBvcDNkL3VzZXIuYw0KPT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL3Bv
> cDNkL3VzZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTANCmRpZmYg
> LWMgLWIgLXcgLXIxLjEwIHVzZXIuYw0KKioqIHBvcDNkL3VzZXIuYwkyMDAx
> LzA0LzE0IDIwOjE3OjI3CTEuMTANCi0tLSBwb3AzZC91c2VyLmMJMjAwMS8w
> NC8yMSAxNToxMToxMQ0KKioqKioqKioqKioqKioqDQoqKiogMjQsMzIgKioq
> Kg0KICBzdGF0aWMgY2hhciAqX3VzZXI7DQogIHN0YXRpYyBpbnQgX3BlcnIg
> PSAwOw0KICANCiEgI2RlZmluZSBQQU1fRVJST1IgaWYgKF9wZXJyIHx8IChw
> YW1lcnJvciAhPSBQQU1fU1VDQ0VTUykpIHsgXA0KISAgICAgcGFtX2VuZChw
> YW1oLCAwKTsgXA0KISAgICAgcmV0dXJuIEVSUl9CQURfTE9HSU47IH0NCiAg
> DQogIHN0YXRpYyBpbnQNCiAgUEFNX2dudXBvcDNkX2NvbnYgKGludCBudW1f
> bXNnLCBjb25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2UgKiptc2csIHN0cnVjdCBw
> YW1fcmVzcG9uc2UgKipyZXNwLCB2b2lkICphcHBkYXRhX3B0cikNCi0tLSAy
> NCwzMSAtLS0tDQogIHN0YXRpYyBjaGFyICpfdXNlcjsNCiAgc3RhdGljIGlu
> dCBfcGVyciA9IDA7DQogIA0KISAjZGVmaW5lIFBBTV9FUlJPUiBpZiAoX3Bl
> cnIgfHwgKHBhbWVycm9yICE9IFBBTV9TVUNDRVNTKSkgXA0KISAgICAgZ290
> byBwYW1fZXJybGFiOwkNCiAgDQogIHN0YXRpYyBpbnQNCiAgUEFNX2dudXBv
> cDNkX2NvbnYgKGludCBudW1fbXNnLCBjb25zdCBzdHJ1Y3QgcGFtX21lc3Nh
> Z2UgKiptc2csIHN0cnVjdCBwYW1fcmVzcG9uc2UgKipyZXNwLCB2b2lkICph
> cHBkYXRhX3B0cikNCioqKioqKioqKioqKioqKg0KKioqIDE0NSwxNTIgKioq
> Kg0KLS0tIDE0NCwxNTQgLS0tLQ0KICAJICBzcHcgPSBnZXRzcG5hbSAoKGNo
> YXIgKilhcmcpOw0KICAJICBpZiAoc3B3ID09IE5VTEwgfHwgc3RyY21wIChz
> cHctPnNwX3B3ZHAsIGNyeXB0IChwYXNzLCBzcHctPnNwX3B3ZHApKSkNCiAg
> I2VuZGlmIC8qIEhBVkVfU0hBRE9XX0ggKi8NCisgCSAgewkgICANCisgCSAg
> ICBzeXNsb2cgKExPR19JTkZPLCAiVXNlciAnJXMnOiBhdXRoZW50aWNhdGlv
> biBmYWxlZCIsIGFyZyk7CSAgDQogIAkgICAgcmV0dXJuIEVSUl9CQURfTE9H
> SU47DQogIAkgIH0NCisgCX0NCiAgI2Vsc2UgLyogIVVTRV9MSUJQQU0gKi8N
> CiAgICAgICAgX3VzZXIgPSAoY2hhciAqKSBhcmc7DQogICAgICAgIF9wd2Qg
> PSBwYXNzOw0KKioqKioqKioqKioqKioqDQoqKiogMTYwLDE2NyAqKioqDQog
> ICAgICAgIFBBTV9FUlJPUjsNCiAgICAgICAgcGFtZXJyb3IgPSBwYW1fc2V0
> Y3JlZCAocGFtaCwgUEFNX0VTVEFCTElTSF9DUkVEKTsNCiAgICAgICAgUEFN
> X0VSUk9SOw0KICAgICAgICBwYW1fZW5kIChwYW1oLCBQQU1fU1VDQ0VTUyk7
> DQohICAgICAgIG9wZW5sb2cgKCJnbnUtcG9wM2QiLCBMT0dfUElELCBMT0df
> TUFJTCk7DQogICNlbmRpZiAvKiBVU0VfTElCUEFNICovDQogIA0KICANCi0t
> LSAxNjIsMTc0IC0tLS0NCiAgICAgICAgUEFNX0VSUk9SOw0KICAgICAgICBw
> YW1lcnJvciA9IHBhbV9zZXRjcmVkIChwYW1oLCBQQU1fRVNUQUJMSVNIX0NS
> RUQpOw0KICAgICAgICBQQU1fRVJST1I7DQorIHBhbV9lcnJsYWI6ICAgICAg
> DQogICAgICAgIHBhbV9lbmQgKHBhbWgsIFBBTV9TVUNDRVNTKTsNCiEgICAg
> ICAgb3BlbmxvZyAoImdudS1wb3AzZCIsIExPR19QSUQsIExPR19GQUNJTElU
> WSk7DQohICAgICAgIGlmIChwYW1lcnJvciAhPSBQQU1fU1VDQ0VTUykgewkJ
> CQkNCiEgCSAgICAgIHN5c2xvZyAoTE9HX0lORk8sICJVc2VyICclcyc6IGF1
> dGhlbnRpY2F0aW9uIGZhbGVkIiwgX3VzZXIpOw0KISAJICAgICAgcmV0dXJu
> IEVSUl9CQURfTE9HSU47DQohICAgICAgIH0NCiAgI2VuZGlmIC8qIFVTRV9M
> SUJQQU0gKi8NCiAgDQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjEwLDIx
> NSAqKioqDQotLS0gMjE3LDIyMyAtLS0tDQogICAgICB9DQogICAgZWxzZSBp
> ZiAoc3RyY2FzZWNtcCAoY21kLCAiUVVJVCIpID09IDApDQogICAgICB7DQor
> ICAgICAgIHN5c2xvZyhMT0dfSU5GTywgIlBvc3NpYmxlIHByb2JlIG9mIGFj
> Y291bnQgJyVzJyIsIGFyZyk7CSAgICANCiAgICAgICAgZnJlZSAoY21kKTsN
> CiAgICAgICAgcmV0dXJuIHBvcDNfcXVpdCAocGFzcyk7DQogICAgICB9DQo=
> ---559023410-851401618-987874947=:8720
> Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=diffs
> Content-Transfer-Encoding: BASE64
> Content-ID: <address@hidden>
> Content-Description: diffs.full
> 
> SW5kZXg6IGFjY29uZmlnLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD
> UyBmaWxlOiAvY3ZzL21haWx1dGlscy9hY2NvbmZpZy5oLHYNCnJldHJpZXZp
> bmcgcmV2aXNpb24gMS42DQpkaWZmIC1jIC1iIC13IC1yMS42IGFjY29uZmln
> LmgNCioqKiBhY2NvbmZpZy5oCTIwMDEvMDEvMjAgMDQ6MzQ6MzgJMS42DQot
> LS0gYWNjb25maWcuaAkyMDAxLzA0LzIxIDE1OjEwOjM3DQoqKioqKioqKioq
> KioqKioNCioqKiAyOSwzMSAqKioqDQotLS0gMjksMzYgLS0tLQ0KICANCiAg
> LyogRGVmaW5lIGlmIHVzaW5nIGxpYnJlYWRsaW5lICovDQogICN1bmRlZiBX
> SVRIX1JFQURMSU5FDQorIA0KKyBAQk9UVE9NQA0KKyANCisgI3VuZGVmIExP
> R19GQUNJTElUWQ0KKyANCkluZGV4OiBjb25maWd1cmUuaW4NCj09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL21haWx1dGlscy9jb25m
> aWd1cmUuaW4sdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQwDQpkaWZmIC1j
> IC1iIC13IC1yMS40MCBjb25maWd1cmUuaW4NCioqKiBjb25maWd1cmUuaW4J
> MjAwMS8wNC8yMCAwNDozNzo0NwkxLjQwDQotLS0gY29uZmlndXJlLmluCTIw
> MDEvMDQvMjEgMTU6MTA6MzcNCioqKioqKioqKioqKioqKg0KKioqIDQyLDQ3
> ICoqKioNCi0tLSA0Miw1NyAtLS0tDQogICAgKikgICBBQ19NU0dfRVJST1Io
> YmFkIHZhbHVlICR7d2l0aHZhbH0gZm9yIC0td2l0aC1kYikgOzsNCiAgICBl
> c2FjXSxbdXNlZGIyPW5vXSkNCiAgDQorIEFDX01TR19DSEVDS0lORyhmb3Ig
> bG9nIGZhY2lsaXR5KSANCisgbG9nX2ZhY2lsaXR5PSJMT0dfTUFJTCINCisg
> QUNfQVJHX1dJVEgobG9nLWZhY2lsaXR5LA0KKyAgIFsgIC0td2l0aC1sb2ct
> ZmFjaWxpdHk9ZmFjaWxpdHkgICBlbmFibGUgbG9nZ2luZyB0byB0aGUgZ2l2
> ZW4gZmFjaWxpdHldLA0KKyAgIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8
> c3lzbG9nLmg+XSwNCisgICAgICAgICAgICAgICAgICAgaW50IGxmID0gJHdp
> dGh2YWwsDQorICAgICAgICAgICAgICAgICAgIGxvZ19mYWNpbGl0eT0kd2l0
> aHZhbCkpDQorIEFDX0RFRklORV9VTlFVT1RFRChMT0dfRkFDSUxJVFksICRs
> b2dfZmFjaWxpdHkpDQorIEFDX01TR19SRVNVTFQoJGxvZ19mYWNpbGl0eSkN
> CisgDQogIGRubCBDaGVjayBmb3IgaGVhZGVycw0KICBBQ19IRUFERVJfU1RE
> Qw0KICBBQ19IRUFERVJfRElSRU5UDQoqKioqKioqKioqKioqKioNCioqKiA3
> OSw4NSAqKioqDQogIAlBQ19SRVBMQUNFX0ZVTkNTKHN0cm5kdXAgc3Rybmxl
> biBzdHJjaHJudWwpDQogIAlBUkdQTElCUz0iLi4vYXJncC9saWJhcmdwLmEi
> DQogIAlBUkdQTElCPSJsaWJhcmdwLmEiDQohIAlBUkdQSU5DUz0iLUkuLi9h
> cmdwIg0KICAJQUNfU1VCU1QoQVJHUExJQlMpDQogIAlBQ19TVUJTVChBUkdQ
> TElCKQ0KICAJQUNfU1VCU1QoQVJHUElOQ1MpDQotLS0gODksOTUgLS0tLQ0K
> ICAJQUNfUkVQTEFDRV9GVU5DUyhzdHJuZHVwIHN0cm5sZW4gc3RyY2hybnVs
> KQ0KICAJQVJHUExJQlM9Ii4uL2FyZ3AvbGliYXJncC5hIg0KICAJQVJHUExJ
> Qj0ibGliYXJncC5hIg0KISAJQVJHUElOQ1M9Ii1JXCQodG9wX3NyY2Rpcikv
> YXJncCINCiAgCUFDX1NVQlNUKEFSR1BMSUJTKQ0KICAJQUNfU1VCU1QoQVJH
> UExJQikNCiAgCUFDX1NVQlNUKEFSR1BJTkNTKQ0KSW5kZXg6IGRvYy9tYWls
> dXRpbHMudGV4aQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6
> IC9jdnMvbWFpbHV0aWxzL2RvYy9tYWlsdXRpbHMudGV4aSx2DQpyZXRyaWV2
> aW5nIHJldmlzaW9uIDEuMTYNCmRpZmYgLWMgLWIgLXcgLXIxLjE2IG1haWx1
> dGlscy50ZXhpDQoqKiogZG9jL21haWx1dGlscy50ZXhpCTIwMDEvMDQvMDUg
> MDQ6MjA6MTYJMS4xNg0KLS0tIGRvYy9tYWlsdXRpbHMudGV4aQkyMDAxLzA0
> LzIxIDE1OjEwOjQxDQoqKioqKioqKioqKioqKioNCioqKiAxNTgsMTY0ICoq
> KioNCiAgQGVuZCBncm91cA0KICBAZW5kIGV4YW1wbGUNCiAgDQohIEZvciBl
> eGFtcGxlIHdyaXRpbmcgYSBzaW1wbGUgQGNvbW1hbmR7ZnJvbX0gY29tbWFu
> ZCB0aGF0IHdpbGwgbGlzdCB0aGUNCiAgQGVtcGh7RnJvbX0gYW5kIEBlbXBo
> e1N1YmplY3R9IGhlYWRlcnMgb2YgZXZlcnkgbWFpbCBpbiBhIGZvbGRlci4N
> CiAgDQogIEBleGFtcGxlDQotLS0gMTU4LDE2NCAtLS0tDQogIEBlbmQgZ3Jv
> dXANCiAgQGVuZCBleGFtcGxlDQogIA0KISBGb3IgZXhhbXBsZSB3cml0aW5n
> IGEgc2ltcGxlIEBjb2Rle2Zyb219IGNvbW1hbmQgdGhhdCB3aWxsIGxpc3Qg
> dGhlDQogIEBlbXBoe0Zyb219IGFuZCBAZW1waHtTdWJqZWN0fSBoZWFkZXJz
> IG9mIGV2ZXJ5IG1haWwgaW4gYSBmb2xkZXIuDQogIA0KICBAZXhhbXBsZQ0K
> SW5kZXg6IGluY2x1ZGUvbWFpbHV0aWxzL3N0cmVhbS5oDQo9PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9tYWlsdXRpbHMvaW5jbHVk
> ZS9tYWlsdXRpbHMvc3RyZWFtLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAx
> LjcNCmRpZmYgLWMgLWIgLXcgLXIxLjcgc3RyZWFtLmgNCioqKiBpbmNsdWRl
> L21haWx1dGlscy9zdHJlYW0uaAkyMDAxLzA0LzE4IDA0OjM0OjQyCTEuNw0K
> LS0tIGluY2x1ZGUvbWFpbHV0aWxzL3N0cmVhbS5oCTIwMDEvMDQvMjEgMTU6
> MTA6NTANCioqKioqKioqKioqKioqKg0KKioqIDM0LDM5ICoqKioNCi0tLSAz
> NCw0MyAtLS0tDQogICMgZW5kaWYNCiAgI2VuZGlmIC8qX19QICovDQogIA0K
> KyAjaWZuZGVmIEVOT1RTVVANCisgIyBkZWZpbmUgRU5PVFNVUCBFT1BOT1RT
> VVBQDQorICNlbmRpZg0KKyANCiAgc3RydWN0IF9zdHJlYW07DQogIHR5cGVk
> ZWYgc3RydWN0IF9zdHJlYW0gKnN0cmVhbV90Ow0KICANCkluZGV4OiBtYWls
> Ym94L01ha2VmaWxlLmFtDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
> ZmlsZTogL2N2cy9tYWlsdXRpbHMvbWFpbGJveC9NYWtlZmlsZS5hbSx2DQpy
> ZXRyaWV2aW5nIHJldmlzaW9uIDEuMjINCmRpZmYgLWMgLWIgLXcgLXIxLjIy
> IE1ha2VmaWxlLmFtDQoqKiogbWFpbGJveC9NYWtlZmlsZS5hbQkyMDAxLzA0
> LzE4IDA0OjM0OjQyCTEuMjINCi0tLSBtYWlsYm94L01ha2VmaWxlLmFtCTIw
> MDEvMDQvMjEgMTU6MTA6NTkNCioqKioqKioqKioqKioqKg0KKioqIDE5LDI0
> ICoqKioNCi0tLSAxOSwyNSAtLS0tDQogIGF1dGguYyBcDQogIGJvZHkuYyBc
> DQogIGRlYnVnLmMgXA0KKyBlcnJvci5jIFwNCiAgZW52ZWxvcGUuYyBcDQog
> IGZpbGVfc3RyZWFtLmMgXA0KICBmaWx0ZXIuYyBcDQpJbmRleDogbWFpbGJv
> eC9maWxlX3N0cmVhbS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
> ZmlsZTogL2N2cy9tYWlsdXRpbHMvbWFpbGJveC9maWxlX3N0cmVhbS5jLHYN
> CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xOQ0KZGlmZiAtYyAtYiAtdyAtcjEu
> MTkgZmlsZV9zdHJlYW0uYw0KKioqIG1haWxib3gvZmlsZV9zdHJlYW0uYwky
> MDAxLzA0LzE4IDA0OjM0OjQyCTEuMTkNCi0tLSBtYWlsYm94L2ZpbGVfc3Ry
> ZWFtLmMJMjAwMS8wNC8yMSAxNToxMTowMA0KKioqKioqKioqKioqKioqDQoq
> KiogMzAsMzUgKioqKg0KLS0tIDMwLDM2IC0tLS0NCiAgI2luY2x1ZGUgPHVu
> aXN0ZC5oPg0KICANCiAgI2luY2x1ZGUgPG1haWx1dGlscy9zdHJlYW0uaD4N
> CisgI2luY2x1ZGUgPG1haWx1dGlscy9lcnJvci5oPg0KICANCiAgc3RydWN0
> IF9maWxlX3N0cmVhbQ0KICB7DQoqKioqKioqKioqKioqKioNCioqKiAyNjUs
> MjcxICoqKioNCiAgCSAgZmRidWYuc3RfbmxpbmsgIT0gMSB8fA0KICAJICBm
> aWxlYnVmLnN0X25saW5rICE9IDEgfHwNCiAgCSAgKGZkYnVmLnN0X21vZGUg
> JiBTX0lGTVQpICE9IFNfSUZSRUcpIHsNCiEgCWZwcmludGYoc3RkZXJyLCIl
> cyBtdXN0IGJlIGEgcGxhaW4gZmlsZSB3aXRoIG9uZSBsaW5rXG4iLCBmaWxl
> bmFtZSk7DQogIAlyZXR1cm4gRUlOVkFMOw0KICAgICAgICB9DQogICAgICB9
> DQotLS0gMjY2LDI3MiAtLS0tDQogIAkgIGZkYnVmLnN0X25saW5rICE9IDEg
> fHwNCiAgCSAgZmlsZWJ1Zi5zdF9ubGluayAhPSAxIHx8DQogIAkgIChmZGJ1
> Zi5zdF9tb2RlICYgU19JRk1UKSAhPSBTX0lGUkVHKSB7DQohIAllcnJvcigi
> JXMgbXVzdCBiZSBhIHBsYWluIGZpbGUgd2l0aCBvbmUgbGlua1xuIiwgZmls
> ZW5hbWUpOw0KICAJcmV0dXJuIEVJTlZBTDsNCiAgICAgICAgfQ0KICAgICAg
> fQ0KSW5kZXg6IG1haWxib3gvZm9sZGVyX2ltYXAuYw0KPT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL21haWxib3gv
> Zm9sZGVyX2ltYXAuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTYNCmRp
> ZmYgLWMgLWIgLXcgLXIxLjE2IGZvbGRlcl9pbWFwLmMNCioqKiBtYWlsYm94
> L2ZvbGRlcl9pbWFwLmMJMjAwMS8wNC8xNiAyMTowNTo1MQkxLjE2DQotLS0g
> bWFpbGJveC9mb2xkZXJfaW1hcC5jCTIwMDEvMDQvMjEgMTU6MTE6MDINCioq
> KioqKioqKioqKioqKg0KKioqIDQwLDQ1ICoqKioNCi0tLSA0MCw0NiAtLS0t
> DQogICNlbmRpZg0KICANCiAgI2luY2x1ZGUgPGltYXAwLmg+DQorICNpbmNs
> dWRlIDxtYWlsdXRpbHMvZXJyb3IuaD4NCiAgDQogIC8qIFZhcmlhYmxlIHVz
> ZSBmb3IgdGhlIHJlZ2lzdHJhci4gICovDQogIHN0YXRpYyBzdHJ1Y3QgX3Jl
> Y29yZCBfaW1hcF9yZWNvcmQgPQ0KKioqKioqKioqKioqKioqDQoqKiogMTUw
> OSwxNTE1ICoqKioNCiAgCQl7DQogIAkJICBzdGF0dXMgPSBpbWFwX3JmYzgy
> Ml9oZWFkZXIgKGZfaW1hcCwgJnNwKTsNCiAgCQl9DQohIAkgICAgICAvKiBl
> bHNlIGZwcmludGYgKHN0ZGVyciwgIm5vdCBzdXBwb3J0ZWQgUkZDODIyIG9w
> dGlvblxuIik7ICAqLw0KICAJICAgIH0NCiAgCSAgZWxzZQ0KICAJICAgIHsN
> Ci0tLSAxNTEwLDE1MTYgLS0tLQ0KICAJCXsNCiAgCQkgIHN0YXR1cyA9IGlt
> YXBfcmZjODIyX2hlYWRlciAoZl9pbWFwLCAmc3ApOw0KICAJCX0NCiEgCSAg
> ICAgIC8qIGVsc2UgZXJyb3IoIm5vdCBzdXBwb3J0ZWQgUkZDODIyIG9wdGlv
> blxuIik7ICAqLw0KICAJICAgIH0NCiAgCSAgZWxzZQ0KICAJICAgIHsNCioq
> KioqKioqKioqKioqKg0KKioqIDE1MjAsMTUyNiAqKioqDQogIAl7DQogIAkg
> IHN0YXR1cyA9IGltYXBfdWlkIChmX2ltYXAsICZzcCk7DQogIAl9DQohICAg
> ICAgIC8qIGVsc2UgZnByaW50ZiAoc3RkZXJyLCAibm90IHN1cHBvcnRlZCBG
> RVRDSCBjb21tYW5kXG4iKTsgICovDQogICAgICB9DQogICAgcmV0dXJuIHN0
> YXR1czsNCiAgfQ0KLS0tIDE1MjEsMTUyNyAtLS0tDQogIAl7DQogIAkgIHN0
> YXR1cyA9IGltYXBfdWlkIChmX2ltYXAsICZzcCk7DQogIAl9DQohICAgICAg
> IC8qIGVsc2UgZXJyb3IoIm5vdCBzdXBwb3J0ZWQgRkVUQ0ggY29tbWFuZFxu
> Iik7ICAqLw0KICAgICAgfQ0KICAgIHJldHVybiBzdGF0dXM7DQogIH0NCioq
> KioqKioqKioqKioqKg0KKioqIDE3MzcsMTc0MyAqKioqDQogIAl9DQogICNp
> ZiAwDQogICAgICAgIC8qIENvbW1lbnQgb3V0IHRvIHNlZSBhbGwgcmVhZGlu
> ZyB0cmFmZmljLiAgKi8NCiEgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiXHRc
> dCVzIiwgZl9pbWFwLT5idWZmZXIpOw0KICAjZW5kaWYNCiAgDQogICAgICAg
> IC8qIFdlIGRvIG5vdCB3YW50IHRvIHN0ZXAgb3ZlciBmX2ltYXAtPmJ1ZmZl
> ciBzaW5jZSBpdCBjYW4gYmUgdXNlDQotLS0gMTczOCwxNzQ0IC0tLS0NCiAg
> CX0NCiAgI2lmIDANCiAgICAgICAgLyogQ29tbWVudCBvdXQgdG8gc2VlIGFs
> bCByZWFkaW5nIHRyYWZmaWMuICAqLw0KISAgICAgICBlcnJvcigiXHRcdCVz
> IiwgZl9pbWFwLT5idWZmZXIpOw0KICAjZW5kaWYNCiAgDQogICAgICAgIC8q
> IFdlIGRvIG5vdCB3YW50IHRvIHN0ZXAgb3ZlciBmX2ltYXAtPmJ1ZmZlciBz
> aW5jZSBpdCBjYW4gYmUgdXNlDQoqKioqKioqKioqKioqKioNCioqKiAxNzc4
> LDE3ODQgKioqKg0KICAJCSAgICAgIC8qIFRoZSBodW1hbi1yZWFkYWJsZSB0
> ZXh0IGNvbnRhaW5zIGEgc3BlY2lhbCBhbGVydCB0aGF0DQogIAkJCSBNVVNU
> IGJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBpbiBhIGZhc2hpb24gdGhhdCBj
> YWxscw0KICAJCQkgdGhlIHVzZXIncyBhdHRlbnRpb24gdG8gdGhlIG1lc3Nh
> Z2UuICAqLw0KISAJCSAgICAgIGZwcmludGYgKHN0ZGVyciwgIkFMRVJUOiAl
> c1xuIiwgKHNwKSA/IHNwIDogIiIpOw0KICAJCSAgICB9DQogIAkJICBlbHNl
> IGlmIChzdHJjYXNlY21wIChzdWJ0YWcsICJCQURDSEFSU0VUIikgPT0gMCkN
> CiAgCQkgICAgew0KLS0tIDE3NzksMTc4NSAtLS0tDQogIAkJICAgICAgLyog
> VGhlIGh1bWFuLXJlYWRhYmxlIHRleHQgY29udGFpbnMgYSBzcGVjaWFsIGFs
> ZXJ0IHRoYXQNCiAgCQkJIE1VU1QgYmUgcHJlc2VudGVkIHRvIHRoZSB1c2Vy
> IGluIGEgZmFzaGlvbiB0aGF0IGNhbGxzDQogIAkJCSB0aGUgdXNlcidzIGF0
> dGVudGlvbiB0byB0aGUgbWVzc2FnZS4gICovDQohIAkJICAgICAgZXJyb3Io
> IkFMRVJUOiAlc1xuIiwgKHNwKSA/IHNwIDogIiIpOw0KICAJCSAgICB9DQog
> IAkJICBlbHNlIGlmIChzdHJjYXNlY21wIChzdWJ0YWcsICJCQURDSEFSU0VU
> IikgPT0gMCkNCiAgCQkgICAgew0KKioqKioqKioqKioqKioqDQoqKiogMTg4
> NSwxOTAyICoqKioNCiAgCQl7DQogIAkJICAvKiBOb3Qgc3VyZSB3aHkgd2Ug
> d291bGQgZ2V0IGFuIHVudGFnZ2VkIG9rLi4uYnV0IHdlIGRvLi4uICovDQog
> IAkJICAvKiBTdGlsbCBzaG91bGQgd2UgYmUgdmVyYm9zZSBhYm91dCBpcyA/
> ICovDQohIAkJICBmcHJpbnRmIChzdGRlcnIsICJVbnRhZ2dlZCBPSzogJXNc
> biIsIHJlbWFpbmRlcik7DQogIAkJfQ0KICAJICAgIH0NCiAgCSAgZWxzZSBp
> ZiAoc3RyY2FzZWNtcCAocmVzcG9uc2UsICJOTyIpID09IDApDQogIAkgICAg
> ew0KICAJICAgICAgLyogVGhpcyBkb2VzIG5vdCBtZWFuIGZhaWx1cmUgYnV0
> IHJhdGhlciBhIHN0cm9uZyB3YXJuaW5nLiAgKi8NCiEgCSAgICAgIGZwcmlu
> dGYgKHN0ZGVyciwgIlVudGFnZ2VkIE5POiAlc1xuIiwgcmVtYWluZGVyKTsN
> CiAgCSAgICB9DQogIAkgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKHJlc3BvbnNl
> LCAiQkFEIikgPT0gMCkNCiAgCSAgICB7DQogIAkgICAgICAvKiBXZSdyZSBk
> ZWFkLCBwcm90b2NvbC9zeW50YXggZXJyb3IuICAqLw0KISAJICAgICAgZnBy
> aW50ZiAoc3RkZXJyLCAiVW50YWdnZWQgQkFEOiAlc1xuIiwgcmVtYWluZGVy
> KTsNCiAgCSAgICB9DQogIAkgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKHJlc3Bv
> bnNlLCAiUFJFQVVUSCIpID09IDApDQogIAkgICAgew0KLS0tIDE4ODYsMTkw
> MyAtLS0tDQogIAkJew0KICAJCSAgLyogTm90IHN1cmUgd2h5IHdlIHdvdWxk
> IGdldCBhbiB1bnRhZ2dlZCBvay4uLmJ1dCB3ZSBkby4uLiAqLw0KICAJCSAg
> LyogU3RpbGwgc2hvdWxkIHdlIGJlIHZlcmJvc2UgYWJvdXQgaXMgPyAqLw0K
> ISAJCSAgZXJyb3IoIlVudGFnZ2VkIE9LOiAlc1xuIiwgcmVtYWluZGVyKTsN
> CiAgCQl9DQogIAkgICAgfQ0KICAJICBlbHNlIGlmIChzdHJjYXNlY21wIChy
> ZXNwb25zZSwgIk5PIikgPT0gMCkNCiAgCSAgICB7DQogIAkgICAgICAvKiBU
> aGlzIGRvZXMgbm90IG1lYW4gZmFpbHVyZSBidXQgcmF0aGVyIGEgc3Ryb25n
> IHdhcm5pbmcuICAqLw0KISAJICAgICAgZXJyb3IoIlVudGFnZ2VkIE5POiAl
> c1xuIiwgcmVtYWluZGVyKTsNCiAgCSAgICB9DQogIAkgIGVsc2UgaWYgKHN0
> cmNhc2VjbXAgKHJlc3BvbnNlLCAiQkFEIikgPT0gMCkNCiAgCSAgICB7DQog
> IAkgICAgICAvKiBXZSdyZSBkZWFkLCBwcm90b2NvbC9zeW50YXggZXJyb3Iu
> ICAqLw0KISAJICAgICAgZXJyb3IoIlVudGFnZ2VkIEJBRDogJXNcbiIsIHJl
> bWFpbmRlcik7DQogIAkgICAgfQ0KICAJICBlbHNlIGlmIChzdHJjYXNlY21w
> IChyZXNwb25zZSwgIlBSRUFVVEgiKSA9PSAwKQ0KICAJICAgIHsNCioqKioq
> KioqKioqKioqKg0KKioqIDE5NTYsMTk2MiAqKioqDQogIAkgIGVsc2UNCiAg
> CSAgICB7DQogIAkgICAgICAvKiBPbmNlIGFnYWluLCBjaGVjayBmb3Igc29t
> ZXRoaW5nIHN0cmFuZ2UuICAqLw0KISAJICAgICAgZnByaW50ZiAoc3RkZXJy
> LCAidW5rbm93biB1bnRhZ2dlZCByZXNwb25zZTogXCIlc1wiICAlc1xuIiwN
> CiAgCQkgICAgICAgcmVzcG9uc2UsIHJlbWFpbmRlcik7DQogIAkgICAgfQ0K
> ICAJfQ0KLS0tIDE5NTcsMTk2MyAtLS0tDQogIAkgIGVsc2UNCiAgCSAgICB7
> DQogIAkgICAgICAvKiBPbmNlIGFnYWluLCBjaGVjayBmb3Igc29tZXRoaW5n
> IHN0cmFuZ2UuICAqLw0KISAJICAgICAgZXJyb3IoInVua25vd24gdW50YWdn
> ZWQgcmVzcG9uc2U6IFwiJXNcIiAgJXNcbiIsDQogIAkJICAgICAgIHJlc3Bv
> bnNlLCByZW1haW5kZXIpOw0KICAJICAgIH0NCiAgCX0NCioqKioqKioqKioq
> KioqKg0KKioqIDE5ODAsMTk4NiAqKioqDQogIAkJICBmb2xkZXJfZ2V0X29i
> c2VydmFibGUgKGZfaW1hcC0+Zm9sZGVyLCAmb2JzZXJ2YWJsZSk7DQogIAkJ
> ICBvYnNlcnZhYmxlX25vdGlmeSAob2JzZXJ2YWJsZSwgTVVfRVZUX0FVVEhP
> UklUWV9GQUlMRUQpOw0KICAJCX0NCiEgCSAgICAgIGZwcmludGYgKHN0ZGVy
> ciwgIk5PL0JhZCBUYWdnZWQ6ICVzICVzXG4iLCByZXNwb25zZSwgcmVtYWlu
> ZGVyKTsNCiAgCSAgICAgIHN0YXR1cyA9IEVJTlZBTDsNCiAgCSAgICB9DQog
> IAl9DQotLS0gMTk4MSwxOTg3IC0tLS0NCiAgCQkgIGZvbGRlcl9nZXRfb2Jz
> ZXJ2YWJsZSAoZl9pbWFwLT5mb2xkZXIsICZvYnNlcnZhYmxlKTsNCiAgCQkg
> IG9ic2VydmFibGVfbm90aWZ5IChvYnNlcnZhYmxlLCBNVV9FVlRfQVVUSE9S
> SVRZX0ZBSUxFRCk7DQogIAkJfQ0KISAJICAgICAgZXJyb3IoIk5PL0JhZCBU
> YWdnZWQ6ICVzICVzXG4iLCByZXNwb25zZSwgcmVtYWluZGVyKTsNCiAgCSAg
> ICAgIHN0YXR1cyA9IEVJTlZBTDsNCiAgCSAgICB9DQogIAl9DQpJbmRleDog
> bWFpbGJveC9tYXBmaWxlX3N0cmVhbS5jDQo9PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09DQpSQ1MgZmlsZTogL2N2cy9tYWlsdXRpbHMvbWFpbGJveC9tYXBmaWxl
> X3N0cmVhbS5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlmZiAt
> YyAtYiAtdyAtcjEuMTAgbWFwZmlsZV9zdHJlYW0uYw0KKioqIG1haWxib3gv
> bWFwZmlsZV9zdHJlYW0uYwkyMDAxLzA0LzE4IDA0OjM0OjQyCTEuMTANCi0t
> LSBtYWlsYm94L21hcGZpbGVfc3RyZWFtLmMJMjAwMS8wNC8yMSAxNToxMTow
> Mw0KKioqKioqKioqKioqKioqDQoqKiogMzQsMzkgKioqKg0KLS0tIDM0LDQy
> IC0tLS0NCiAgI2lmZGVmIF9QT1NJWF9NQVBQRURfRklMRVMNCiAgI2luY2x1
> ZGUgPHN5cy9tbWFuLmg+DQogIA0KKyAjaWZuZGVmIE1BUF9GQUlMRUQNCisg
> IyBkZWZpbmUgTUFQX0ZBSUxFRCAodm9pZCopLTENCisgI2VuZGlmDQogIA0K
> ICBzdHJ1Y3QgX21hcGZpbGVfc3RyZWFtDQogIHsNCkluZGV4OiBtYWlsYm94
> L21ieF9kZWZhdWx0LmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
> aWxlOiAvY3ZzL21haWx1dGlscy9tYWlsYm94L21ieF9kZWZhdWx0LmMsdg0K
> cmV0cmlldmluZyByZXZpc2lvbiAxLjcNCmRpZmYgLWMgLWIgLXcgLXIxLjcg
> bWJ4X2RlZmF1bHQuYw0KKioqIG1haWxib3gvbWJ4X2RlZmF1bHQuYwkyMDAx
> LzAxLzE2IDA2OjE0OjUyCTEuNw0KLS0tIG1haWxib3gvbWJ4X2RlZmF1bHQu
> YwkyMDAxLzA0LzIxIDE1OjExOjAzDQoqKioqKioqKioqKioqKioNCioqKiAy
> OSwzNCAqKioqDQotLS0gMjksMzUgLS0tLQ0KICAjZW5kaWYNCiAgDQogICNp
> bmNsdWRlIDxtYWlsdXRpbHMvbWFpbGJveC5oPg0KKyAjaW5jbHVkZSA8bWFp
> bHV0aWxzL2Vycm9yLmg+DQogIA0KICAjaWZuZGVmIF9QQVRIX01BSUxESVIN
> CiAgIyBkZWZpbmUgX1BBVEhfTUFJTERJUiAiL3Vzci9zcG9vbC9tYWlsIg0K
> KioqKioqKioqKioqKioqDQoqKiogNjksNzUgKioqKg0KICAJICB1c2VyID0g
> KGdldGVudiAoIkxPR05BTUUiKSkgPyBnZXRlbnYgKCJMT0dOQU1FIikgOiBn
> ZXRlbnYgKCJVU0VSIik7DQogIAkgIGlmICh1c2VyID09IE5VTEwpDQogIAkg
> ICAgew0KISAJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiV2hvIGFtIEkgP1xu
> Iik7DQogIAkgICAgICByZXR1cm4gRUlOVkFMOw0KICAJICAgIH0NCiAgCX0N
> Ci0tLSA3MCw3NiAtLS0tDQogIAkgIHVzZXIgPSAoZ2V0ZW52ICgiTE9HTkFN
> RSIpKSA/IGdldGVudiAoIkxPR05BTUUiKSA6IGdldGVudiAoIlVTRVIiKTsN
> CiAgCSAgaWYgKHVzZXIgPT0gTlVMTCkNCiAgCSAgICB7DQohIAkgICAgICBl
> cnJvcigiV2hvIGFtIEkgP1xuIik7DQogIAkgICAgICByZXR1cm4gRUlOVkFM
> Ow0KICAJICAgIH0NCiAgCX0NCkluZGV4OiBtYWlsYm94L21ieF9pbWFwLmMN
> Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvY3ZzL21haWx1
> dGlscy9tYWlsYm94L21ieF9pbWFwLmMsdg0KcmV0cmlldmluZyByZXZpc2lv
> biAxLjI1DQpkaWZmIC1jIC1iIC13IC1yMS4yNSBtYnhfaW1hcC5jDQoqKiog
> bWFpbGJveC9tYnhfaW1hcC5jCTIwMDEvMDQvMTQgMjA6MTc6MjcJMS4yNQ0K
> LS0tIG1haWxib3gvbWJ4X2ltYXAuYwkyMDAxLzA0LzIxIDE1OjExOjA0DQoq
> KioqKioqKioqKioqKioNCioqKiAyOSwzNCAqKioqDQotLS0gMjksMzUgLS0t
> LQ0KICAjaW5jbHVkZSA8dGltZS5oPg0KICANCiAgI2luY2x1ZGUgPG1haWx1
> dGlscy9hZGRyZXNzLmg+DQorICNpbmNsdWRlIDxtYWlsdXRpbHMvZXJyb3Iu
> aD4NCiAgI2luY2x1ZGUgPG1haWxib3gwLmg+DQogICNpbmNsdWRlIDxyZWdp
> c3RyYXIwLmg+DQogICNpbmNsdWRlIDxpbWFwMC5oPg0KKioqKioqKioqKioq
> KioqDQoqKiogNjM2LDY0MiAqKioqDQogIAkgICAgICBmX2ltYXAtPnN0YXRl
> ID0gSU1BUF9OT19TVEFURTsNCiAgDQogIAkgICAgZGVmYXVsdDoNCiEgCSAg
> ICAgIC8qIGZwcmludGYgKHN0ZGVyciwgImltYXBfZXhwdW5nZTogdW5rbm93
> IHN0YXRlXG4iKTsgKi8NCiAgCSAgICAgIGJyZWFrOw0KICAJICAgIH0gLyog
> c3dpdGNoIChzdGF0ZSkgKi8NCiAgICAgICAgICB9IC8qIG1lc3NhZ2VfZ2V0
> X2F0dHJpYnV0ZSgpICovDQotLS0gNjM3LDY0MyAtLS0tDQogIAkgICAgICBm
> X2ltYXAtPnN0YXRlID0gSU1BUF9OT19TVEFURTsNCiAgDQogIAkgICAgZGVm
> YXVsdDoNCiEgCSAgICAgIC8qIGVycm9yKCJpbWFwX2V4cHVuZ2U6IHVua25v
> dyBzdGF0ZVxuIik7ICovDQogIAkgICAgICBicmVhazsNCiAgCSAgICB9IC8q
> IHN3aXRjaCAoc3RhdGUpICovDQogICAgICAgICAgfSAvKiBtZXNzYWdlX2dl
> dF9hdHRyaWJ1dGUoKSAqLw0KKioqKioqKioqKioqKioqDQoqKiogODU5LDg2
> NSAqKioqDQogICAgICAgIE1BSUxCT1hfREVCVUcwIChtX2ltYXAtPm1haWxi
> b3gsIE1VX0RFQlVHX1BST1QsIGZfaW1hcC0+YnVmZmVyKTsNCiAgDQogICAg
> ICBkZWZhdWx0Og0KISAgICAgICAvKiBmcHJpbnRmIChzdGRlcnIsICJpbWFw
> X2V4cHVuZ2U6IHVua25vdyBzdGF0ZVxuIik7ICovDQogICAgICAgIGJyZWFr
> Ow0KICAgICAgfQ0KICAgIGZfaW1hcC0+c3RhdGUgPSBJTUFQX05PX1NUQVRF
> Ow0KLS0tIDg2MCw4NjYgLS0tLQ0KICAgICAgICBNQUlMQk9YX0RFQlVHMCAo
> bV9pbWFwLT5tYWlsYm94LCBNVV9ERUJVR19QUk9ULCBmX2ltYXAtPmJ1ZmZl
> cik7DQogIA0KICAgICAgZGVmYXVsdDoNCiEgICAgICAgLyogZXJyb3IoImlt
> YXBfZXhwdW5nZTogdW5rbm93IHN0YXRlXG4iKTsgKi8NCiAgICAgICAgYnJl
> YWs7DQogICAgICB9DQogICAgZl9pbWFwLT5zdGF0ZSA9IElNQVBfTk9fU1RB
> VEU7DQpJbmRleDogbWFpbGJveC9tYnhfbWJveC5jDQo9PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9tYWlsdXRpbHMvbWFpbGJveC9t
> YnhfbWJveC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS40Mw0KZGlmZiAt
> YyAtYiAtdyAtcjEuNDMgbWJ4X21ib3guYw0KKioqIG1haWxib3gvbWJ4X21i
> b3guYwkyMDAxLzA0LzE3IDAzOjMxOjE5CTEuNDMNCi0tLSBtYWlsYm94L21i
> eF9tYm94LmMJMjAwMS8wNC8yMSAxNToxMTowNQ0KKioqKioqKioqKioqKioq
> DQoqKiogNTQsNTkgKioqKg0KLS0tIDU0LDYwIC0tLS0NCiAgI2luY2x1ZGUg
> PG1haWx1dGlscy9ib2R5Lmg+DQogICNpbmNsdWRlIDxtYWlsdXRpbHMvaGVh
> ZGVyLmg+DQogICNpbmNsdWRlIDxtYWlsdXRpbHMvYXR0cmlidXRlLmg+DQor
> ICNpbmNsdWRlIDxtYWlsdXRpbHMvZXJyb3IuaD4NCiAgI2luY2x1ZGUgPHJl
> Z2lzdHJhcjAuaD4NCiAgI2luY2x1ZGUgPG1haWxib3gwLmg+DQogIA0KKioq
> KioqKioqKioqKioqDQoqKiogMTA1LDExMSAqKioqDQogICNkZWZpbmUgSF9Y
> X1VJREwgICAgICAgICAgICAgICAgICAgIDE0DQogICAgIlgtVUlETCINCiAg
> fTsNCi0gDQogIC8qIEtlZXAgdGhlIGZpbGUgcG9zaXRpb25zIG9mIHdoZXJl
> IHRoZSBoZWFkZXJzIGFuZCBib2RpZXMgc3RhcnQgYW5kIGVuZC4NCiAgICAg
> YXR0cl9mbGFncyBpcyB0aGUgIlN0YXR1czoiIG1lc3NhZ2UuICAqLw0KICBz
> dHJ1Y3QgX21ib3hfbWVzc2FnZQ0KLS0tIDEwNiwxMTEgLS0tLQ0KKioqKioq
> KioqKioqKioqDQoqKiogNDc1LDQ5MSAqKioqDQogIHsNCiAgICBvZmZfdCBz
> aXplID0gMDsNCiAgICBtYm94X2RhdGFfdCBtdWQgPSBtYWlsYm94LT5kYXRh
> Ow0KISAgIGlmIChzdHJlYW1fc2l6ZSAobWFpbGJveC0+c3RyZWFtLCAmc2l6
> ZSkgIT0gMCkNCiAgICAgIHJldHVybiAwOw0KICAgIGlmIChzaXplIDwgbXVk
> LT5zaXplKQ0KICAgICAgew0KICAgICAgICBvYnNlcnZhYmxlX25vdGlmeSAo
> bWFpbGJveC0+b2JzZXJ2YWJsZSwgTVVfRVZUX01BSUxCT1hfQ09SUlVQVCk7
> DQogICAgICAgIC8qIEFuZCBiZSB2ZXJib3NlLiAgPyAqLw0KISAgICAgICBm
> cHJpbnRmIChzdGRlcnIsICIqIEJBRCA6IE1haWxib3ggY29ycnVwdGVkLCBz
> aHJhbmsgc2l6ZVxuIik7DQogICAgICAgIC8qIEZJWE1FOiBzaG91bGQgSSBj
> cmFzaC4gICovDQogICAgICAgIHJldHVybiAxOw0KICAgICAgfQ0KISAgIHJl
> dHVybiAobXVkLT5zaXplID09IHNpemUpOw0KICB9DQogIA0KICAvKiBUcnkg
> dG8gY3JlYXRlIGFuIHVuaXEgZmlsZSwgd2Ugbm8gcmFjZSBjb25kaXRpb25z
> LiAgICovDQotLS0gNDc1LDQ5MSAtLS0tDQogIHsNCiAgICBvZmZfdCBzaXpl
> ID0gMDsNCiAgICBtYm94X2RhdGFfdCBtdWQgPSBtYWlsYm94LT5kYXRhOw0K
> ISAgIGlmIChtdWQtPnNpemUgPT0gMCB8fCBzdHJlYW1fc2l6ZSAobWFpbGJv
> eC0+c3RyZWFtLCAmc2l6ZSkgIT0gMCkNCiAgICAgIHJldHVybiAwOw0KICAg
> IGlmIChzaXplIDwgbXVkLT5zaXplKQ0KICAgICAgew0KICAgICAgICBvYnNl
> cnZhYmxlX25vdGlmeSAobWFpbGJveC0+b2JzZXJ2YWJsZSwgTVVfRVZUX01B
> SUxCT1hfQ09SUlVQVCk7DQogICAgICAgIC8qIEFuZCBiZSB2ZXJib3NlLiAg
> PyAqLw0KISAgICAgICBlcnJvcigiKiBCQUQgOiBNYWlsYm94IGNvcnJ1cHRl
> ZCwgc2hyYW5rIHNpemUiKTsNCiAgICAgICAgLyogRklYTUU6IHNob3VsZCBJ
> IGNyYXNoLiAgKi8NCiAgICAgICAgcmV0dXJuIDE7DQogICAgICB9DQohICAg
> cmV0dXJuIChtdWQtPnNpemUgIT0gc2l6ZSk7DQogIH0NCiAgDQogIC8qIFRy
> eSB0byBjcmVhdGUgYW4gdW5pcSBmaWxlLCB3ZSBubyByYWNlIGNvbmRpdGlv
> bnMuICAgKi8NCioqKioqKioqKioqKioqKg0KKioqIDU5MSw1OTcgKioqKg0K
> ICAgICAgew0KICAgICAgICBpZiAodG1wbWJveG5hbWUpDQogIAlmcmVlICh0
> bXBtYm94bmFtZSk7DQohICAgICAgIGZwcmludGYgKHN0ZGVyciwgIkZhaWxl
> ZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgd2hlbiBleHB1bmdpbmcuXG4i
> KTsNCiAgICAgICAgcmV0dXJuIGVycm5vOw0KICAgICAgfQ0KICANCi0tLSA1
> OTEsNTk3IC0tLS0NCiAgICAgIHsNCiAgICAgICAgaWYgKHRtcG1ib3huYW1l
> KQ0KICAJZnJlZSAodG1wbWJveG5hbWUpOw0KISAgICAgICBlcnJvcigiRmFp
> bGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZSB3aGVuIGV4cHVuZ2luZy4i
> KTsNCiAgICAgICAgcmV0dXJuIGVycm5vOw0KICAgICAgfQ0KICANCioqKioq
> KioqKioqKioqKg0KKioqIDY1MSw2NTcgKioqKg0KICAgICAgICBtYWlsYm94
> X2Rlc3Ryb3kgKCZ0bXBtYWlsYm94KTsNCiAgICAgICAgcmVtb3ZlICh0bXBt
> Ym94bmFtZSk7DQogICAgICAgIGZyZWUgKHRtcG1ib3huYW1lKTsNCiEgICAg
> ICAgZnByaW50ZiAoc3RkZXJyLCAiRmFpbGVkIHRvIGdyYWIgdGhlIGxvY2tc
> biIpOw0KICAgICAgICByZXR1cm4gRU5PTENLOw0KICAgICAgfQ0KICANCi0t
> LSA2NTEsNjU3IC0tLS0NCiAgICAgICAgbWFpbGJveF9kZXN0cm95ICgmdG1w
> bWFpbGJveCk7DQogICAgICAgIHJlbW92ZSAodG1wbWJveG5hbWUpOw0KICAg
> ICAgICBmcmVlICh0bXBtYm94bmFtZSk7DQohICAgICAgIGVycm9yKCJGYWls
> ZWQgdG8gZ3JhYiB0aGUgbG9jayIpOw0KICAgICAgICByZXR1cm4gRU5PTENL
> Ow0KICAgICAgfQ0KICANCioqKioqKioqKioqKioqKg0KKioqIDcwMyw3MDkg
> KioqKg0KICAJICAgICAgc3RhdHVzID0gbWJveF9nZXRfbWVzc2FnZSAobWFp
> bGJveCwgaSwgJm1zZyk7DQogIAkgICAgICBpZiAoc3RhdHVzICE9IDApDQog
> IAkJew0KISAJCSAgZnByaW50ZiAoc3RkZXJyLCAiRXJyb3IgZXhwdW5nZTol
> ZDogJXMiLCBfX0xJTkVfXywNCiAgCQkJICAgc3RyZXJyb3IgKHN0YXR1cykp
> Ow0KICAJCSAgZ290byBiYWlsb3V0MDsNCiAgCQl9DQotLS0gNzAzLDcwOSAt
> LS0tDQogIAkgICAgICBzdGF0dXMgPSBtYm94X2dldF9tZXNzYWdlIChtYWls
> Ym94LCBpLCAmbXNnKTsNCiAgCSAgICAgIGlmIChzdGF0dXMgIT0gMCkNCiAg
> CQl7DQohIAkJICBlcnJvcigiRXJyb3IgJXM6JWQ6ICVzIiwgX19GSUxFX18s
> IF9fTElORV9fLA0KICAJCQkgIHN0cmVycm9yIChzdGF0dXMpKTsNCiAgCQkg
> IGdvdG8gYmFpbG91dDA7DQogIAkJfQ0KKioqKioqKioqKioqKioqDQoqKiog
> NzEyLDcxOCAqKioqDQogIAkJCQkJICZ0b3RhbCwgMSwgKGkgPT0gc2F2ZV9p
> bWFwYmFzZSkpOw0KICAJICBpZiAoc3RhdHVzICE9IDApDQogIAkgICAgew0K
> ISAJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiRXJyb3IgZXhwdW5nZTolZDog
> JXMiLCBfX0xJTkVfXywNCiAgCQkgICAgICAgc3RyZXJyb3IgKHN0YXR1cykp
> Ow0KICAJICAgICAgZ290byBiYWlsb3V0MDsNCiAgCSAgICB9DQotLS0gNzEy
> LDcxOCAtLS0tDQogIAkJCQkJICZ0b3RhbCwgMSwgKGkgPT0gc2F2ZV9pbWFw
> YmFzZSkpOw0KICAJICBpZiAoc3RhdHVzICE9IDApDQogIAkgICAgew0KISAJ
> ICAgICAgZXJyb3IoIkVycm9yICVzOiVkOiAlcyIsIF9fRklMRV9fLCBfX0xJ
> TkVfXywNCiAgCQkgICAgICAgc3RyZXJyb3IgKHN0YXR1cykpOw0KICAJICAg
> ICAgZ290byBiYWlsb3V0MDsNCiAgCSAgICB9DQoqKioqKioqKioqKioqKioN
> CioqKiA3MzUsNzQxICoqKioNCiAgCQkgIHx8IChzdGF0dXMgPSBzdHJlYW1f
> d3JpdGUgKHRtcG1haWxib3gtPnN0cmVhbSwgYnVmZmVyLCBuLA0KICAJCQkJ
> CSAgICAgdG90YWwsICZuKSAhPSAwKSkNCiAgCQl7DQohIAkJICBmcHJpbnRm
> IChzdGRlcnIsICJFcnJvciBleHB1bmdlOiVkOiAlcyIsIF9fTElORV9fLA0K
> ICAJCQkgICBzdHJlcnJvciAoc3RhdHVzKSk7DQogIAkJICBnb3RvIGJhaWxv
> dXQwOw0KICAJCX0NCi0tLSA3MzUsNzQxIC0tLS0NCiAgCQkgIHx8IChzdGF0
> dXMgPSBzdHJlYW1fd3JpdGUgKHRtcG1haWxib3gtPnN0cmVhbSwgYnVmZmVy
> LCBuLA0KICAJCQkJCSAgICAgdG90YWwsICZuKSAhPSAwKSkNCiAgCQl7DQoh
> IAkJICBlcnJvcigiRXJyb3IgJXM6JWQ6ICVzIiwgX19GSUxFX18sIF9fTElO
> RV9fLA0KICAJCQkgICBzdHJlcnJvciAoc3RhdHVzKSk7DQogIAkJICBnb3Rv
> IGJhaWxvdXQwOw0KICAJCX0NCioqKioqKioqKioqKioqKg0KKioqIDc0Nyw3
> NTMgKioqKg0KICAJICBzdGF0dXMgPSBzdHJlYW1fd3JpdGUgKHRtcG1haWxi
> b3gtPnN0cmVhbSwgIlxuIiwgMSwgdG90YWwsICZuKTsNCiAgCSAgaWYgKHN0
> YXR1cyAhPSAwKQ0KICAJICAgIHsNCiEgCSAgICAgIGZwcmludGYgKHN0ZGVy
> ciwgIkVycm9yIGV4cHVuZ2U6JWQ6ICVzIiwgX19MSU5FX18sDQogIAkJICAg
> ICAgIHN0cmVycm9yIChzdGF0dXMpKTsNCiAgCSAgICAgIGdvdG8gYmFpbG91
> dDA7DQogIAkgICAgfQ0KLS0tIDc0Nyw3NTMgLS0tLQ0KICAJICBzdGF0dXMg
> PSBzdHJlYW1fd3JpdGUgKHRtcG1haWxib3gtPnN0cmVhbSwgIlxuIiwgMSwg
> dG90YWwsICZuKTsNCiAgCSAgaWYgKHN0YXR1cyAhPSAwKQ0KICAJICAgIHsN
> CiEgCSAgICAgIGVycm9yKCJFcnJvciAlczolZDogJXMiLCBfX0ZJTEVfXywg
> X19MSU5FX18sDQogIAkJICAgICAgIHN0cmVycm9yIChzdGF0dXMpKTsNCiAg
> CSAgICAgIGdvdG8gYmFpbG91dDA7DQogIAkgICAgfQ0KKioqKioqKioqKioq
> KioqDQoqKiogNzc3LDc4MyAqKioqDQogIAkJCQkgICAgICAgdG90YWwsICZu
> KTsNCiAgCQlpZiAoc3RhdHVzICE9IDApDQogIAkJICB7DQohIAkJICAgIGZw
> cmludGYgKHN0ZGVyciwgIkVycm9yIGV4cHVuZ2U6JWQ6ICVzIiwgX19MSU5F
> X18sDQogIAkJCSAgICAgc3RyZXJyb3IgKHN0YXR1cykpOw0KICAJCSAgICBn
> b3RvIGJhaWxvdXQwOw0KICAJCSAgfQ0KLS0tIDc3Nyw3ODMgLS0tLQ0KICAJ
> CQkJICAgICAgIHRvdGFsLCAmbik7DQogIAkJaWYgKHN0YXR1cyAhPSAwKQ0K
> ICAJCSAgew0KISAJCSAgICBlcnJvcigiRXJyb3IgJXM6JWQ6ICVzIiwgX19G
> SUxFX18sIF9fTElORV9fLA0KICAJCQkgICAgIHN0cmVycm9yIChzdGF0dXMp
> KTsNCiAgCQkgICAgZ290byBiYWlsb3V0MDsNCiAgCQkgIH0NCioqKioqKioq
> KioqKioqKg0KKioqIDc4OCw3OTQgKioqKg0KICAJZWxzZSBpZiAobGVuIDwg
> MCkNCiAgCSAgew0KICAJICAgIC8qIENvcnJ1cHRlZCBtYWlsYm94LiAgKi8N
> CiEgCSAgICBmcHJpbnRmIChzdGRlcnIsICJFcnJvciBleHB1bmdlOiVkOiAl
> cyIsIF9fTElORV9fLA0KICAJCSAgICAgc3RyZXJyb3IgKHN0YXR1cykpOw0K
> ICAJICAgIGdvdG8gYmFpbG91dDA7DQogIAkgIH0NCi0tLSA3ODgsNzk0IC0t
> LS0NCiAgCWVsc2UgaWYgKGxlbiA8IDApDQogIAkgIHsNCiAgCSAgICAvKiBD
> b3JydXB0ZWQgbWFpbGJveC4gICovDQohIAkgICAgZXJyb3IoIkVycm9yICVz
> OiVkOiAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXywNCiAgCQkgICAgIHN0cmVy
> cm9yIChzdGF0dXMpKTsNCiAgCSAgICBnb3RvIGJhaWxvdXQwOw0KICAJICB9
> DQoqKioqKioqKioqKioqKioNCioqKiA4MDksODE1ICoqKioNCiAgCSAgc3Rh
> dHVzID0gc3RyZWFtX3dyaXRlIChtYWlsYm94LT5zdHJlYW0sIGJ1ZmZlciwg
> biwgb2Zmc2V0LCAmbik7DQogIAkgIGlmIChzdGF0dXMgIT0gMCkNCiAgCSAg
> ICB7DQohIAkgICAgICBmcHJpbnRmIChzdGRlcnIsICJFcnJvciBleHB1bmdl
> OiVkOiAlc1xuIiwgX19MSU5FX18sDQogIAkJICAgICAgIHN0cmVycm9yIChz
> dGF0dXMpKTsNCiAgCSAgICAgIGdvdG8gYmFpbG91dDsNCiAgCSAgICB9DQot
> LS0gODA5LDgxNSAtLS0tDQogIAkgIHN0YXR1cyA9IHN0cmVhbV93cml0ZSAo
> bWFpbGJveC0+c3RyZWFtLCBidWZmZXIsIG4sIG9mZnNldCwgJm4pOw0KICAJ
> ICBpZiAoc3RhdHVzICE9IDApDQogIAkgICAgew0KISAJICAgICAgZXJyb3Io
> IkVycm9yICVzOiVkOiAlc1xuIiwgX19GSUxFX18sIF9fTElORV9fLA0KICAJ
> CSAgICAgICBzdHJlcnJvciAoc3RhdHVzKSk7DQogIAkgICAgICBnb3RvIGJh
> aWxvdXQ7DQogIAkgICAgfQ0KKioqKioqKioqKioqKioqDQoqKiogODIzLDgy
> OSAqKioqDQogICAgc3RhdHVzID0gc3RyZWFtX3RydW5jYXRlIChtYWlsYm94
> LT5zdHJlYW0sIHRvdGFsICsgbWFya2VyKTsNCiAgICBpZiAoc3RhdHVzICE9
> IDApDQogICAgICB7DQohICAgICAgIGZwcmludGYgKHN0ZGVyciwgIkVycm9y
> IGV4cHVuZ2luZzolZDogJXNcbiIsIF9fTElORV9fLA0KICAJICAgICAgIHN0
> cmVycm9yIChzdGF0dXMpKTsNCiAgICAgICAgZ290byBiYWlsb3V0Ow0KICAg
> ICAgfQ0KLS0tIDgyMyw4MjkgLS0tLQ0KICAgIHN0YXR1cyA9IHN0cmVhbV90
> cnVuY2F0ZSAobWFpbGJveC0+c3RyZWFtLCB0b3RhbCArIG1hcmtlcik7DQog
> ICAgaWYgKHN0YXR1cyAhPSAwKQ0KICAgICAgew0KISAgICAgICBlcnJvcigi
> RXJyb3IgJXM6JWQ6ICVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sDQogIAkg
> ICAgICAgc3RyZXJyb3IgKHN0YXR1cykpOw0KICAgICAgICBnb3RvIGJhaWxv
> dXQ7DQogICAgICB9DQoqKioqKioqKioqKioqKioNCioqKiAxMjQ3LDEyNTMg
> KioqKg0KICAgIG1lc3NhZ2VfdCBtc2cgPSBOVUxMOw0KICANCiAgICAvKiBT
> YW5pdHkgY2hlY2tzLiAgKi8NCiEgICBpZiAocG1zZyA9PSBOVUxMIHx8IG11
> ZCA9PSBOVUxMKQ0KICAgICAgcmV0dXJuIEVJTlZBTDsNCiAgDQogICAgLyog
> SWYgd2UgZGlkIG5vdCBzdGFydCBhIHNjYW5uaW5nIHlldCBkbyBpdCBub3cu
> ICAqLw0KLS0tIDEyNDcsMTI1MyAtLS0tDQogICAgbWVzc2FnZV90IG1zZyA9
> IE5VTEw7DQogIA0KICAgIC8qIFNhbml0eSBjaGVja3MuICAqLw0KISAgIGlm
> IChwbXNnID09IE5VTEwgfHwgbXVkID09IE5VTEwgfHwgbWJveF9pc191cGRh
> dGVkKG1haWxib3gpKQ0KICAgICAgcmV0dXJuIEVJTlZBTDsNCiAgDQogICAg
> LyogSWYgd2UgZGlkIG5vdCBzdGFydCBhIHNjYW5uaW5nIHlldCBkbyBpdCBu
> b3cuICAqLw0KKioqKioqKioqKioqKioqDQoqKiogMTQwMCwxNDA2ICoqKioN
> CiAgfQ0KICANCiAgLyogRklYTUU6IFdlIG5lZWQgdG8gZXNjYXBlIGJvZHkg
> bGluZSB0aGF0IGJlZ2lucyB3aXRoICJGcm9tICIsIHRoaXMNCiEgICAgd2ls
> bCByZXF1aXJlZCB0byByZWFkIHRoZSBib2R5IGJ5IGxpbmUgaW5zdGVhZCBv
> ZiBieSBjaHVuY2tzIGh1cnRpbmcNCiAgICAgcGVyZm9tYW5jZSBiaWcgdGlt
> ZSB3aGVuIGV4cHVuZ2luZy4gIEJ1dCBzaG91bGQgbm90IHRoaXMgYmUgdGhl
> DQogICAgIHJlc3BvbnNhYmlsaXR5IG9mIHRoZSBjbGllbnQgPyAgKi8NCiAg
> c3RhdGljIGludA0KLS0tIDE0MDAsMTQwNiAtLS0tDQogIH0NCiAgDQogIC8q
> IEZJWE1FOiBXZSBuZWVkIHRvIGVzY2FwZSBib2R5IGxpbmUgdGhhdCBiZWdp
> bnMgd2l0aCAiRnJvbSAiLCB0aGlzDQohICAgIHdpbGwgcmVxdWlyZSB0byBy
> ZWFkIHRoZSBib2R5IGxpbmUgYnkgbGluZSBpbnN0ZWFkIG9mIGJ5IGNodW5r
> cyBodXJ0aW5nDQogICAgIHBlcmZvbWFuY2UgYmlnIHRpbWUgd2hlbiBleHB1
> bmdpbmcuICBCdXQgc2hvdWxkIG5vdCB0aGlzIGJlIHRoZQ0KICAgICByZXNw
> b25zYWJpbGl0eSBvZiB0aGUgY2xpZW50ID8gICovDQogIHN0YXRpYyBpbnQN
> CkluZGV4OiBtYWlsYm94L21ieF9wb3AuYw0KPT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL21haWxib3gvbWJ4X3Bv
> cC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS40NQ0KZGlmZiAtYyAtYiAt
> dyAtcjEuNDUgbWJ4X3BvcC5jDQoqKiogbWFpbGJveC9tYnhfcG9wLmMJMjAw
> MS8wNC8xNiAyMTowNTo1MQkxLjQ1DQotLS0gbWFpbGJveC9tYnhfcG9wLmMJ
> MjAwMS8wNC8yMSAxNToxMTowNg0KKioqKioqKioqKioqKioqDQoqKiogNDMs
> NDggKioqKg0KLS0tIDQzLDQ5IC0tLS0NCiAgI2luY2x1ZGUgPG1haWx1dGls
> cy9hdHRyaWJ1dGUuaD4NCiAgI2luY2x1ZGUgPG1haWx1dGlscy91cmwuaD4N
> CiAgI2luY2x1ZGUgPG1haWx1dGlscy9hdXRoLmg+DQorICNpbmNsdWRlIDxt
> YWlsdXRpbHMvZXJyb3IuaD4NCiAgI2luY2x1ZGUgPG1haWxib3gwLmg+DQog
> ICNpbmNsdWRlIDxyZWdpc3RyYXIwLmg+DQogIA0KKioqKioqKioqKioqKioq
> DQoqKiogNDUyLDQ1OCAqKioqDQogICAgcmV0dXJuIDA7DQogIH0NCiAgDQoh
> IC8qIE9wZW4gdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNldmVyLCBhbmQgc2Vu
> ZCB0aGUgYXV0aGVudGljYXRpb24uDQogICAgIEZJWE1FOiBTaG91bGQgYWxz
> byBzZW5kIHRoZSBDQVBBIGNvbW1hbmQgdG8gZGV0ZWN0IGZvciBleGFtcGxl
> IHRoZSBzdXBvcnQNCiAgICAgZm9yIFRPUCwgQVBPUCwgLi4uIGFuZCBEVFJU
> KERvIFRoZSBSaWdodCBUaGluZykuICAqLw0KICBzdGF0aWMgaW50DQotLS0g
> NDUzLDQ1OSAtLS0tDQogICAgcmV0dXJuIDA7DQogIH0NCiAgDQohIC8qIE9w
> ZW4gdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciwgYW5kIHNlbmQgdGhl
> IGF1dGhlbnRpY2F0aW9uLg0KICAgICBGSVhNRTogU2hvdWxkIGFsc28gc2Vu
> ZCB0aGUgQ0FQQSBjb21tYW5kIHRvIGRldGVjdCBmb3IgZXhhbXBsZSB0aGUg
> c3Vwb3J0DQogICAgIGZvciBUT1AsIEFQT1AsIC4uLiBhbmQgRFRSVChEbyBU
> aGUgUmlnaHQgVGhpbmcpLiAgKi8NCiAgc3RhdGljIGludA0KKioqKioqKioq
> KioqKioqDQoqKiogNTc4LDU4NCAqKioqDQogIA0KICAgICAgZGVmYXVsdDoN
> CiAgICAgICAgLyoNCiEgCWZwcmludGYgKHN0ZGVyciwgInBvcF9vcGVuIHVu
> a25vd24gc3RhdGVcbiIpOw0KICAgICAgICAqLw0KICAgICAgICBicmVhazsN
> CiAgICAgIH0vKiBFbmQgQVVUSE9SSVNBVElPTiBzdGF0ZS4gKi8NCi0tLSA1
> NzksNTg1IC0tLS0NCiAgDQogICAgICBkZWZhdWx0Og0KICAgICAgICAvKg0K
> ISAJZXJyb3IoInBvcF9vcGVuIHVua25vd24gc3RhdGVcbiIpOw0KICAgICAg
> ICAqLw0KICAgICAgICBicmVhazsNCiAgICAgIH0vKiBFbmQgQVVUSE9SSVNB
> VElPTiBzdGF0ZS4gKi8NCioqKioqKioqKioqKioqKg0KKioqIDYzNCw2NDYg
> KioqKg0KICAJICBsZXRzIGp1c3QgYmUgdmVyYm9zZSBhYm91dCB0aGUgZXJy
> b3IgYnV0IGNsb3NlIHRoZSBjb25uZWN0aW9uDQogIAkgIGFueXdheS4gICov
> DQogICAgICAgIGlmIChzdHJuY2FzZWNtcCAobXBkLT5idWZmZXIsICIrT0si
> LCAzKSAhPSAwKQ0KISAJZnByaW50ZiAoc3RkZXJyLCAicG9wX2Nsb3NlOiAl
> c1xuIiwgbXBkLT5idWZmZXIpOw0KICAgICAgICBzdHJlYW1fY2xvc2UgKG1i
> b3gtPnN0cmVhbSk7DQogICAgICAgIGJyZWFrOw0KICANCiAgICAgIGRlZmF1
> bHQ6DQogICAgICAgIC8qDQohIAlmcHJpbnRmIChzdGRlcnIsICJwb3BfY2xv
> c2UgdW5rbm93IHN0YXRlIik7DQogICAgICAgICovDQogICAgICAgIGJyZWFr
> Ow0KICAgICAgfSAvKiBVUERBVEUgc3RhdGUuICAqLw0KLS0tIDYzNSw2NDcg
> LS0tLQ0KICAJICBsZXRzIGp1c3QgYmUgdmVyYm9zZSBhYm91dCB0aGUgZXJy
> b3IgYnV0IGNsb3NlIHRoZSBjb25uZWN0aW9uDQogIAkgIGFueXdheS4gICov
> DQogICAgICAgIGlmIChzdHJuY2FzZWNtcCAobXBkLT5idWZmZXIsICIrT0si
> LCAzKSAhPSAwKQ0KISAJZXJyb3IoInBvcF9jbG9zZTogJXNcbiIsIG1wZC0+
> YnVmZmVyKTsNCiAgICAgICAgc3RyZWFtX2Nsb3NlIChtYm94LT5zdHJlYW0p
> Ow0KICAgICAgICBicmVhazsNCiAgDQogICAgICBkZWZhdWx0Og0KICAgICAg
> ICAvKg0KISAJZXJyb3IoInBvcF9jbG9zZSB1bmtub3cgc3RhdGUiKTsNCiAg
> ICAgICAgKi8NCiAgICAgICAgYnJlYWs7DQogICAgICB9IC8qIFVQREFURSBz
> dGF0ZS4gICovDQoqKioqKioqKioqKioqKioNCioqKiA4ODEsODg3ICoqKioN
> CiAgDQogICAgICBkZWZhdWx0Og0KICAgICAgICAvKg0KISAJZnByaW50ZiAo
> c3RkZXJyLCAicG9wX21lc3NhZ2VzX2NvdW50OiB1bmtub3cgc3RhdGVcbiIp
> Ow0KICAgICAgICAqLw0KICAgICAgICBicmVhazsNCiAgICAgIH0NCi0tLSA4
> ODIsODg4IC0tLS0NCiAgDQogICAgICBkZWZhdWx0Og0KICAgICAgICAvKg0K
> ISAJZXJyb3IoInBvcF9tZXNzYWdlc19jb3VudDogdW5rbm93IHN0YXRlXG4i
> KTsNCiAgICAgICAgKi8NCiAgICAgICAgYnJlYWs7DQogICAgICB9DQoqKioq
> KioqKioqKioqKioNCioqKiA5OTYsMTAwMiAqKioqDQogIAkJICBicmVhazsN
> CiAgDQogIAkJZGVmYXVsdDoNCiEgCQkgIC8qIGZwcmludGYgKHN0ZGVyciwg
> InBvcF9leHB1bmdlOiB1bmtub3cgc3RhdGVcbiIpOyAqLw0KICAJCSAgYnJl
> YWs7DQogIAkJfSAvKiBzd2l0Y2ggKHN0YXRlKSAqLw0KICAJICAgIH0gLyog
> aWYgYXR0cmlidXRlX2lzX2RlbGV0ZWQoKSAqLw0KLS0tIDk5NywxMDAzIC0t
> LS0NCiAgCQkgIGJyZWFrOw0KICANCiAgCQlkZWZhdWx0Og0KISAJCSAgLyog
> ZXJyb3IoInBvcF9leHB1bmdlOiB1bmtub3cgc3RhdGVcbiIpOyAqLw0KICAJ
> CSAgYnJlYWs7DQogIAkJfSAvKiBzd2l0Y2ggKHN0YXRlKSAqLw0KICAJICAg
> IH0gLyogaWYgYXR0cmlidXRlX2lzX2RlbGV0ZWQoKSAqLw0KKioqKioqKioq
> KioqKioqDQoqKiogMTA4NiwxMDkyICoqKioNCiAgDQogICAgICBkZWZhdWx0
> Og0KICAgICAgICAvKg0KISAJZnByaW50ZiAoc3RkZXJyLCAicG9wX21lc3Nh
> Z2Vfc2l6ZSBzdGF0ZVxuIik7DQogICAgICAgICovDQogICAgICAgIGJyZWFr
> Ow0KICAgICAgfQ0KLS0tIDEwODcsMTA5MyAtLS0tDQogIA0KICAgICAgZGVm
> YXVsdDoNCiAgICAgICAgLyoNCiEgCWVycm9yKCJwb3BfbWVzc2FnZV9zaXpl
> IHN0YXRlXG4iKTsNCiAgICAgICAgKi8NCiAgICAgICAgYnJlYWs7DQogICAg
> ICB9DQoqKioqKioqKioqKioqKioNCioqKiAxMjExLDEyMTcgKioqKg0KICAg
> IHJldHVybiAwOw0KICB9DQogIA0KISAvKiBHZXQgdGhlIFVJREwuICBDbGll
> bnQgc2hvdWxkIGJlIHByZXBhcmUgc2luY2UgaXQgbWF5IGZhaWwuICBVSURM
> IGlzDQogICAgIG9wdGlvbmFsIG9uIG1hbnkgUE9QIHNlcnZlcnMuDQogICAg
> IEZJWE1FOiAgV2Ugc2hvdWxkIGNoZWNrIHRoaXMgd2l0aCBDQVBBIGFuZCBm
> YWxsIGJhY2sgdG8gYSBtZDUgc2NoZW1lID8NCiAgICAgT3IgbWF5YmUgY2hl
> Y2sgZm9yICJYLVVJREwiIGEgbGEgUXBvcHBlciA/ICAqLw0KLS0tIDEyMTIs
> MTIxOCAtLS0tDQogICAgcmV0dXJuIDA7DQogIH0NCiAgDQohIC8qIEdldCB0
> aGUgVUlETC4gIENsaWVudCBzaG91bGQgYmUgcHJlcGFyZWQgc2luY2UgaXQg
> bWF5IGZhaWwuICBVSURMIGlzDQogICAgIG9wdGlvbmFsIG9uIG1hbnkgUE9Q
> IHNlcnZlcnMuDQogICAgIEZJWE1FOiAgV2Ugc2hvdWxkIGNoZWNrIHRoaXMg
> d2l0aCBDQVBBIGFuZCBmYWxsIGJhY2sgdG8gYSBtZDUgc2NoZW1lID8NCiAg
> ICAgT3IgbWF5YmUgY2hlY2sgZm9yICJYLVVJREwiIGEgbGEgUXBvcHBlciA/
> ICAqLw0KKioqKioqKioqKioqKioqDQoqKiogMTI3NywxMjgzICoqKioNCiAg
> DQogICAgICBkZWZhdWx0Og0KICAgICAgICAvKg0KISAJZnByaW50ZiAoc3Rk
> ZXJyLCAicG9wX3VpZGwgc3RhdGVcbiIpOw0KICAgICAgICAqLw0KICAgICAg
> ICBicmVhazsNCiAgICAgIH0NCi0tLSAxMjc4LDEyODQgLS0tLQ0KICANCiAg
> ICAgIGRlZmF1bHQ6DQogICAgICAgIC8qDQohIAllcnJvcigicG9wX3VpZGwg
> c3RhdGVcbiIpOw0KICAgICAgICAqLw0KICAgICAgICBicmVhazsNCiAgICAg
> IH0NCioqKioqKioqKioqKioqKg0KKioqIDEzNzEsMTM3NyAqKioqDQogICAg
> ICAgIE1BSUxCT1hfREVCVUcwIChtcGQtPm1ib3gsIE1VX0RFQlVHX1BST1Qs
> IG1wZC0+YnVmZmVyKTsNCiAgICAgICAgaWYgKHN0cm5jYXNlY21wIChtcGQt
> PmJ1ZmZlciwgIitPSyIsIDMpICE9IDApDQogIAl7DQohIAkgIC8qIGZwcmlu
> dGYgKHN0ZGVyciwgIlRPUCBub3QgaW1wbGVtZW50ZWRcbiIpOyAqLw0KICAJ
> ICAvKiBGYWxsIGJhY2sgdG8gUkVUUiBjYWxsLiAgKi8NCiAgCSAgbXBkLT5z
> dGF0ZSA9IFBPUF9OT19TVEFURTsNCiAgCSAgbXBtLT5za2lwX2hlYWRlciA9
> IDA7DQotLS0gMTM3MiwxMzc4IC0tLS0NCiAgICAgICAgTUFJTEJPWF9ERUJV
> RzAgKG1wZC0+bWJveCwgTVVfREVCVUdfUFJPVCwgbXBkLT5idWZmZXIpOw0K
> ICAgICAgICBpZiAoc3RybmNhc2VjbXAgKG1wZC0+YnVmZmVyLCAiK09LIiwg
> MykgIT0gMCkNCiAgCXsNCiEgCSAgLyogZXJyb3IoIlRPUCBub3QgaW1wbGVt
> ZW50ZWRcbiIpOyAqLw0KICAJICAvKiBGYWxsIGJhY2sgdG8gUkVUUiBjYWxs
> LiAgKi8NCiAgCSAgbXBkLT5zdGF0ZSA9IFBPUF9OT19TVEFURTsNCiAgCSAg
> bXBtLT5za2lwX2hlYWRlciA9IDA7DQoqKioqKioqKioqKioqKioNCioqKiAx
> NzMwLDE3MzYgKioqKg0KICAgICAgICAvKiBBIGNvbnZlbmllbnQgYnJlYWss
> IHRoaXMgaXMgaGVyZSB3ZSBjYW4gcmV0dXJuIDAsIHdlJ3JlIGRvbmUuICAq
> Lw0KICANCiAgICAgIGRlZmF1bHQ6DQohICAgICAgIC8qIGZwcmludGYgKHN0
> ZGVyciwgInBvcF9yZXRyIHVua25vdyBzdGF0ZVxuIik7ICovDQogICAgICAg
> IGJyZWFrOw0KICAgICAgfSAvKiBTd2l0Y2ggc3RhdGUuICAqLw0KICANCi0t
> LSAxNzMxLDE3MzcgLS0tLQ0KICAgICAgICAvKiBBIGNvbnZlbmllbnQgYnJl
> YWssIHRoaXMgaXMgaGVyZSB3ZSBjYW4gcmV0dXJuIDAsIHdlJ3JlIGRvbmUu
> ICAqLw0KICANCiAgICAgIGRlZmF1bHQ6DQohICAgICAgIC8qIGVycm9yKCJw
> b3BfcmV0ciB1bmtub3cgc3RhdGVcbiIpOyAqLw0KICAgICAgICBicmVhazsN
> CiAgICAgIH0gLyogU3dpdGNoIHN0YXRlLiAgKi8NCiAgDQpJbmRleDogbWFp
> bGJveC9tZXNzYWdlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm
> aWxlOiAvY3ZzL21haWx1dGlscy9tYWlsYm94L21lc3NhZ2UuYyx2DQpyZXRy
> aWV2aW5nIHJldmlzaW9uIDEuNDgNCmRpZmYgLWMgLWIgLXcgLXIxLjQ4IG1l
> c3NhZ2UuYw0KKioqIG1haWxib3gvbWVzc2FnZS5jCTIwMDEvMDQvMTAgMDU6
> MTM6NTEJMS40OA0KLS0tIG1haWxib3gvbWVzc2FnZS5jCTIwMDEvMDQvMjEg
> MTU6MTE6MDcNCioqKioqKioqKioqKioqKg0KKioqIDI1OCwyNjQgKioqKg0K
> ICAgICAgcmV0dXJuIEVJTlZBTDsNCiAgICBpZiAobXNnLT5vd25lciAhPSBv
> d25lcikNCiAgICAgICByZXR1cm4gRUFDQ0VTOw0KISAgIC8qIE1ha2Ugc3Vy
> ZSB3ZSBkZXN0b3kgdGhlIG9sZCBpZiBpdCB3YXMgb3duIGJ5IHRoZSBtZXNn
> ICovDQogICAgLyogRklYTUU6ICBJIGRvIG5vdCBrbm93IGlmIHNvbWVib2R5
> IGhhcyBhbHJlYWR5IGEgcmVmIG9uIHRoaXMgPyAqLw0KICAgIGlmIChtc2ct
> PmhlYWRlcikNCiAgICAgIGhlYWRlcl9kZXN0cm95ICgmKG1zZy0+aGVhZGVy
> KSwgbXNnKTsNCi0tLSAyNTgsMjY0IC0tLS0NCiAgICAgIHJldHVybiBFSU5W
> QUw7DQogICAgaWYgKG1zZy0+b3duZXIgIT0gb3duZXIpDQogICAgICAgcmV0
> dXJuIEVBQ0NFUzsNCiEgICAvKiBNYWtlIHN1cmUgd2UgZGVzdHJveSB0aGUg
> b2xkIGlmIGl0IHdhcyBvd24gYnkgdGhlIG1lc2cgKi8NCiAgICAvKiBGSVhN
> RTogIEkgZG8gbm90IGtub3cgaWYgc29tZWJvZHkgaGFzIGFscmVhZHkgYSBy
> ZWYgb24gdGhpcyA/ICovDQogICAgaWYgKG1zZy0+aGVhZGVyKQ0KICAgICAg
> aGVhZGVyX2Rlc3Ryb3kgKCYobXNnLT5oZWFkZXIpLCBtc2cpOw0KSW5kZXg6
> IG1haWxib3gvc3RyZWFtLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJD
> UyBmaWxlOiAvY3ZzL21haWx1dGlscy9tYWlsYm94L3N0cmVhbS5jLHYNCnJl
> dHJpZXZpbmcgcmV2aXNpb24gMS4xMA0KZGlmZiAtYyAtYiAtdyAtcjEuMTAg
> c3RyZWFtLmMNCioqKiBtYWlsYm94L3N0cmVhbS5jCTIwMDEvMDQvMDUgMDQ6
> MTc6MDkJMS4xMA0KLS0tIG1haWxib3gvc3RyZWFtLmMJMjAwMS8wNC8yMSAx
> NToxMTowOQ0KKioqKioqKioqKioqKioqDQoqKiogMzUsNDAgKioqKg0KLS0t
> IDM1LDQxIC0tLS0NCiAgI2luY2x1ZGUgPHN0cmluZy5oPg0KICANCiAgI2lu
> Y2x1ZGUgPHN0cmVhbTAuaD4NCisgI2luY2x1ZGUgPG1haWx1dGlscy9lcnJv
> ci5oPg0KICANCiAgc3RhdGljIGludCByZWZpbGwgKHN0cmVhbV90LCBvZmZf
> dCk7DQogIA0KKioqKioqKioqKioqKioqDQoqKiogMzM1LDM0MSAqKioqDQog
> IAkgICAgICAodm9pZCltZW1jcHkgKCh2b2lkICopcywgKHZvaWQgKilwLCBs
> ZW4pOw0KICAJICAgICAgdG90YWwgKz0gbGVuOw0KICAJICAgICAgc1tsZW5d
> ID0gMDsNCiEgCSAgICAgIC8vZnByaW50ZiAoc3RkZXJyLCAiOiVkICVkOiVz
> IiwgbGVuLCB0b3RhbCwgcyk7DQogIAkgICAgICBpZiAocG5yZWFkKQ0KICAJ
> CSpwbnJlYWQgPSB0b3RhbDsNCiAgCSAgICAgIHJldHVybiAwOw0KLS0tIDMz
> NiwzNDIgLS0tLQ0KICAJICAgICAgKHZvaWQpbWVtY3B5ICgodm9pZCAqKXMs
> ICh2b2lkICopcCwgbGVuKTsNCiAgCSAgICAgIHRvdGFsICs9IGxlbjsNCiAg
> CSAgICAgIHNbbGVuXSA9IDA7DQohIAkgICAgICAvL2Vycm9yKCI6JWQgJWQ6
> JXMiLCBsZW4sIHRvdGFsLCBzKTsNCiAgCSAgICAgIGlmIChwbnJlYWQpDQog
> IAkJKnBucmVhZCA9IHRvdGFsOw0KICAJICAgICAgcmV0dXJuIDA7DQoqKioq
> KioqKioqKioqKioNCioqKiAzNDQsMzU2ICoqKioNCiAgCSAgaXMtPnJidWZm
> ZXIucHRyICs9IGxlbjsNCiAgCSAgaXMtPnJidWZmZXIub2Zmc2V0ICs9IGxl
> bjsNCiAgCSAgKHZvaWQpbWVtY3B5KCh2b2lkICopcywgKHZvaWQgKilwLCBs
> ZW4pOw0KISAJICAvL2ZwcmludGYgKHN0ZGVyciwgIiE6JWQgJWRcbiIsIGxl
> biwgdG90YWwpOw0KICAJICB0b3RhbCArPSBsZW47DQogIAkgIHMgKz0gbGVu
> Ow0KICAJICBjb3VudCAtPSBsZW47DQogICAgICAgICAgfQ0KICAgICAgICAq
> cyA9IDA7DQohICAgICAgIC8vZnByaW50ZiAoc3RkZXJyLCAiMTolcyIsIHMp
> Ow0KICAgICAgICBpZiAocG5yZWFkKQ0KICAJKnBucmVhZCA9IHMgLSBidWY7
> DQogICAgICB9DQotLS0gMzQ1LDM1NyAtLS0tDQogIAkgIGlzLT5yYnVmZmVy
> LnB0ciArPSBsZW47DQogIAkgIGlzLT5yYnVmZmVyLm9mZnNldCArPSBsZW47
> DQogIAkgICh2b2lkKW1lbWNweSgodm9pZCAqKXMsICh2b2lkICopcCwgbGVu
> KTsNCiEgCSAgLy9lcnJvcigiITolZCAlZFxuIiwgbGVuLCB0b3RhbCk7DQog
> IAkgIHRvdGFsICs9IGxlbjsNCiAgCSAgcyArPSBsZW47DQogIAkgIGNvdW50
> IC09IGxlbjsNCiAgICAgICAgICB9DQogICAgICAgICpzID0gMDsNCiEgICAg
> ICAgLy9lcnJvcigiMTolcyIsIHMpOw0KICAgICAgICBpZiAocG5yZWFkKQ0K
> ICAJKnBucmVhZCA9IHMgLSBidWY7DQogICAgICB9DQoqKioqKioqKioqKioq
> KioNCioqKiA2MjcsNjM1ICoqKioNCiAgICAgICAgc3RhdHVzID0gc3RyZWFt
> LT5fcmVhZCAoc3RyZWFtLCBzdHJlYW0tPnJidWZmZXIucHRyLA0KICAJCQkg
> ICAgICBzdHJlYW0tPnJidWZmZXIuYnVmc2l6LCBvZmZzZXQsDQogIAkJCSAg
> ICAgIChzaXplX3QgKikmKHN0cmVhbS0+cmJ1ZmZlci5jb3VudCkpOw0KISAg
> ICAgICAvL2ZwcmludGYgKHN0ZGVyciwgIkNPVU5UJWRcbiIsIHN0cmVhbS0+
> cmJ1ZmZlci5jb3VudCk7DQogICAgICAgIC8vc3RyZWFtLT5yYnVmZmVyLnB0
> cltzdHJlYW0tPnJidWZmZXIuY291bnRdID0gMDsNCiEgICAgICAgLy9mcHJp
> bnRmIChzdGRlcnIsICIlc1xuIiwgc3RyZWFtLT5yYnVmZmVyLnB0cik7DQog
> ICAgICAgIHJldHVybiBzdGF0dXM7DQogICAgICB9DQogICAgcmV0dXJuIEVO
> T1RTVVA7DQotLS0gNjI4LDYzNiAtLS0tDQogICAgICAgIHN0YXR1cyA9IHN0
> cmVhbS0+X3JlYWQgKHN0cmVhbSwgc3RyZWFtLT5yYnVmZmVyLnB0ciwNCiAg
> CQkJICAgICAgc3RyZWFtLT5yYnVmZmVyLmJ1ZnNpeiwgb2Zmc2V0LA0KICAJ
> CQkgICAgICAoc2l6ZV90ICopJihzdHJlYW0tPnJidWZmZXIuY291bnQpKTsN
> CiEgICAgICAgLy9lcnJvcigiQ09VTlQlZFxuIiwgc3RyZWFtLT5yYnVmZmVy
> LmNvdW50KTsNCiAgICAgICAgLy9zdHJlYW0tPnJidWZmZXIucHRyW3N0cmVh
> bS0+cmJ1ZmZlci5jb3VudF0gPSAwOw0KISAgICAgICAvL2Vycm9yKCIlc1xu
> Iiwgc3RyZWFtLT5yYnVmZmVyLnB0cik7DQogICAgICAgIHJldHVybiBzdGF0
> dXM7DQogICAgICB9DQogICAgcmV0dXJuIEVOT1RTVVA7DQpJbmRleDogcG9w
> M2QvY2FwYS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTog
> L2N2cy9tYWlsdXRpbHMvcG9wM2QvY2FwYS5jLHYNCnJldHJpZXZpbmcgcmV2
> aXNpb24gMS4zDQpkaWZmIC1jIC1iIC13IC1yMS4zIGNhcGEuYw0KKioqIHBv
> cDNkL2NhcGEuYwkyMDAxLzAxLzI5IDA2OjEzOjAzCTEuMw0KLS0tIHBvcDNk
> L2NhcGEuYwkyMDAxLzA0LzIxIDE1OjExOjEwDQoqKioqKioqKioqKioqKioN
> CioqKiAzMSwzOCAqKioqDQotLS0gMzEsNDAgLS0tLQ0KICAgIGZwcmludGYg
> KG9maWxlLCAiVVNFUlxyXG4iKTsNCiAgICBmcHJpbnRmIChvZmlsZSwgIlVJ
> RExcclxuIik7DQogICAgZnByaW50ZiAob2ZpbGUsICJSRVNQLUNPREVTXHJc
> biIpOw0KKyAjaWZuZGVmIFRFUlNFX01PREUNCiAgICBpZiAoc3RhdGUgPT0g
> VFJBTlNBQ1RJT04pCS8qIGxldCdzIG5vdCBhZHZlcnRpc2UgdG8ganVzdCBh
> bnlvbmUgKi8NCiAgICAgIGZwcmludGYgKG9maWxlLCAiSU1QTEVNRU5UQVRJ
> T04gJXMgJXNcclxuIiwgSU1QTCwgVkVSU0lPTik7DQorICNlbmRpZg0KICAg
> IGZwcmludGYgKG9maWxlLCAiLlxyXG4iKTsNCiAgICByZXR1cm4gT0s7DQog
> IH0NCkluZGV4OiBwb3AzZC9leHRyYS5jDQo9PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09DQpSQ1MgZmlsZTogL2N2cy9tYWlsdXRpbHMvcG9wM2QvZXh0cmEuYyx2
> DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTANCmRpZmYgLWMgLWIgLXcgLXIx
> LjEwIGV4dHJhLmMNCioqKiBwb3AzZC9leHRyYS5jCTIwMDEvMDIvMDIgMDQ6
> MDA6MTAJMS4xMA0KLS0tIHBvcDNkL2V4dHJhLmMJMjAwMS8wNC8yMSAxNTox
> MToxMA0KKioqKioqKioqKioqKioqDQoqKiogMTE4LDEyMyAqKioqDQotLS0g
> MTE4LDEyOCAtLS0tDQogICAgICAgIHN5c2xvZyAoTE9HX0lORk8sICJObyBz
> b2NrZXQgdG8gc2VuZCB0byIpOw0KICAgICAgICBicmVhazsNCiAgDQorICAg
> ICBjYXNlIEVSUl9NQk9YX1NZTkM6DQorICAgICAgIHN5c2xvZyhMT0dfRVJS
> LCAibWFpbGJveCB3YXMgdXBkYXRlZCBieSBvdGhlciBwYXJ0eTogJXMiLCB1
> c2VybmFtZSk7DQorICAgICAgIGZwcmludGYob2ZpbGUsICItRVJSIE1haWxi
> b3ggdXBkYXRlZCBieSBvdGhlciBwYXJ0eSBvciBjb3JydXB0XHJcbiIpOw0K
> KyAgICAgICBicmVhazsNCisgDQogICAgICBkZWZhdWx0Og0KICAgICAgICBm
> cHJpbnRmIChvZmlsZSwgIi1FUlIgUXVpdHRpbmcgKHJlYXNvbiB1bmtub3du
> KVxyXG4iKTsNCiAgICAgICAgc3lzbG9nIChMT0dfRVJSLCAiVW5rbm93biBx
> dWl0Iik7DQoqKioqKioqKioqKioqKioNCioqKiAxNTYsMTYyICoqKioNCiAg
> dm9pZA0KICBwb3AzX3NpZ25hbCAoaW50IHNpZ25vKQ0KICB7DQohICAgKHZv
> aWQpc2lnbm87DQogICAgcG9wM19hYnF1aXQgKEVSUl9TSUdOQUwpOw0KICB9
> DQogIA0KLS0tIDE2MSwxNjcgLS0tLQ0KICB2b2lkDQogIHBvcDNfc2lnbmFs
> IChpbnQgc2lnbm8pDQogIHsNCiEgICBzeXNsb2coTE9HX0NSSVQsICJnb3Qg
> c2lnbmFsICVkIiwgc2lnbm8pOwkNCiAgICBwb3AzX2FicXVpdCAoRVJSX1NJ
> R05BTCk7DQogIH0NCiAgDQpJbmRleDogcG9wM2QvcG9wM2QuYw0KPT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL3Bv
> cDNkL3BvcDNkLmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjIyDQpkaWZm
> IC1jIC1iIC13IC1yMS4yMiBwb3AzZC5jDQoqKiogcG9wM2QvcG9wM2QuYwky
> MDAxLzA0LzE2IDAyOjI2OjMxCTEuMjINCi0tLSBwb3AzZC9wb3AzZC5jCTIw
> MDEvMDQvMjEgMTU6MTE6MTANCioqKioqKioqKioqKioqKg0KKioqIDQ5LDU0
> ICoqKioNCi0tLSA0OSw1NyAtLS0tDQogIA0KICBjb25zdCBjaGFyICpzaG9y
> dF9vcHRpb25zID0iZDo6aGlwOnQ6diI7DQogIA0KKyBzdGF0aWMgdm9pZCBz
> eXNsb2dfZXJyb3JfcHJpbnRlcihjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg
> YXApOw0KKyANCisgDQogIGludA0KICBtYWluIChpbnQgYXJnYywgY2hhciAq
> KmFyZ3YpDQogIHsNCioqKioqKioqKioqKioqKg0KKioqIDEyNywxMzMgKioq
> Kg0KICAgIHNpZ25hbCAoU0lHSUxMLCBwb3AzX3NpZ25hbCk7DQogICAgc2ln
> bmFsIChTSUdCVVMsIHBvcDNfc2lnbmFsKTsNCiAgICBzaWduYWwgKFNJR0ZQ
> RSwgcG9wM19zaWduYWwpOw0KISAgIHNpZ25hbCAoU0lHU0VHViwgcG9wM19z
> aWduYWwpOw0KICAgIHNpZ25hbCAoU0lHVEVSTSwgcG9wM19zaWduYWwpOw0K
> ICAgIHNpZ25hbCAoU0lHU1RPUCwgcG9wM19zaWduYWwpOw0KICAgIHNpZ25h
> bCAoU0lHUElQRSwgcG9wM19zaWduYWwpOw0KLS0tIDEzMCwxMzYgLS0tLQ0K
> ICAgIHNpZ25hbCAoU0lHSUxMLCBwb3AzX3NpZ25hbCk7DQogICAgc2lnbmFs
> IChTSUdCVVMsIHBvcDNfc2lnbmFsKTsNCiAgICBzaWduYWwgKFNJR0ZQRSwg
> cG9wM19zaWduYWwpOw0KISAgIHNpZ25hbCAoU0lHU0VHViwgcG9wM19zaWdu
> YWwpOw0KICAgIHNpZ25hbCAoU0lHVEVSTSwgcG9wM19zaWduYWwpOw0KICAg
> IHNpZ25hbCAoU0lHU1RPUCwgcG9wM19zaWduYWwpOw0KICAgIHNpZ25hbCAo
> U0lHUElQRSwgcG9wM19zaWduYWwpOw0KKioqKioqKioqKioqKioqDQoqKiog
> MTQyLDE0OCAqKioqDQogICAgY2hkaXIgKCIvIik7DQogIA0KICAgIC8qIFNl
> dCB1cCBmb3Igc3lzbG9nLiAgKi8NCiEgICBvcGVubG9nICgiZ251LXBvcDNk
> IiwgTE9HX1BJRCwgTE9HX01BSUwpOw0KICANCiAgICB1bWFzayAoU19JUk9U
> SCB8IFNfSVdPVEggfCBTX0lYT1RIKTsJLyogMDA3ICovDQogIA0KLS0tIDE0
> NSwxNTIgLS0tLQ0KICAgIGNoZGlyICgiLyIpOw0KICANCiAgICAvKiBTZXQg
> dXAgZm9yIHN5c2xvZy4gICovDQohICAgb3BlbmxvZyAoImdudS1wb3AzZCIs
> IExPR19QSUQsIExPR19GQUNJTElUWSk7DQohICAgZXJyb3Jfc2V0X3ByaW50
> KHN5c2xvZ19lcnJvcl9wcmludGVyKTsNCiAgICANCiAgICB1bWFzayAoU19J
> Uk9USCB8IFNfSVdPVEggfCBTX0lYT1RIKTsJLyogMDA3ICovDQogIA0KKioq
> KioqKioqKioqKioqDQoqKiogMjA1LDIxMCAqKioqDQotLS0gMjA5LDIxNiAt
> LS0tDQogICAgY2hhciAqYnVmLCAqYXJnLCAqY21kOw0KICAgIHN0cnVjdCBo
> b3N0ZW50ICpodGJ1ZjsNCiAgICBjaGFyICpsb2NhbF9ob3N0bmFtZTsNCisg
> ICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY3M7DQorICAgaW50IGxlbjsNCiAgDQog
> ICAgaWZpbGUgPSBpbmZpbGU7DQogICAgb2ZpbGUgPSBmZG9wZW4gKG91dGZp
> bGUsICJ3Iik7DQoqKioqKioqKioqKioqKioNCioqKiAyMTMsMjIwICoqKioN
> CiAgICBzdGF0ZSA9IEFVVEhPUklaQVRJT047DQogICAgY3Vycl90aW1lID0g
> dGltZSAoTlVMTCk7DQogIA0KISAgIC8qIEZJWE1FOiAgUmV0cmVpdmUgaG9z
> dG5hbWUgd2l0aCBnZXRwZWVybmFtZSgpIGFuZCBsb2cuICAqLw0KISAgIHN5
> c2xvZyAoTE9HX0lORk8sICJJbmNvbWluZyBjb25uZWN0aW9uIG9wZW5lZCIp
> Ow0KICANCiAgICAvKiBQcmVwYXJlIHRoZSBzaGFyZWQgc2VjcmV0IGZvciBB
> UE9QLiAgKi8NCiAgICBsb2NhbF9ob3N0bmFtZSA9IG1hbGxvYyAoTUFYSE9T
> VE5BTUVMRU4gKyAxKTsNCi0tLSAyMTksMjMxIC0tLS0NCiAgICBzdGF0ZSA9
> IEFVVEhPUklaQVRJT047DQogICAgY3Vycl90aW1lID0gdGltZSAoTlVMTCk7
> DQogIA0KISAgIC8qIGxvZyBpbmZvcm1hdGlvbiBvbiB0aGUgY29ubmVjdGlu
> ZyBjbGllbnQgKi8NCiEgICBsZW4gPSBzaXplb2YgY3M7DQohICAgaWYgKGdl
> dHBlZXJuYW1lKGluZmlsZSwgKHN0cnVjdCBzb2NrYWRkciopJmNzLCAmbGVu
> KSA8IDApIA0KISAgICAgICBzeXNsb2coTE9HX0VSUiwgImNhbid0IG9idGFp
> biBJUCBhZGRyZXNzIG9mIGNsaWVudDogJXMiLA0KISAgICAgICAgICAgICBz
> dHJlcnJvcihlcnJubykpOw0KISAgIGVsc2UNCiEgICAgICAgc3lzbG9nKExP
> R19JTkZPLCAiY29ubmVjdCBmcm9tICVzIiwgaW5ldF9udG9hKGNzLnNpbl9h
> ZGRyKSk7DQogIAkgIA0KICAgIC8qIFByZXBhcmUgdGhlIHNoYXJlZCBzZWNy
> ZXQgZm9yIEFQT1AuICAqLw0KICAgIGxvY2FsX2hvc3RuYW1lID0gbWFsbG9j
> IChNQVhIT1NUTkFNRUxFTiArIDEpOw0KKioqKioqKioqKioqKioqDQoqKiog
> MjM4LDI0NSAqKioqDQotLS0gMjQ5LDI2MSAtLS0tDQogICAgZnJlZSAobG9j
> YWxfaG9zdG5hbWUpOw0KICANCiAgICBmZmx1c2ggKG9maWxlKTsNCisgI2lm
> ZGVmIFRFUlNFX01PREUNCisgIyB1bmRlZiBXRUxDT01FDQorICMgZGVmaW5l
> IFdFTENPTUUgInJlYWR5Ig0KKyAjZW5kaWYgIA0KICAgIGZwcmludGYgKG9m
> aWxlLCAiK09LIFBPUDMgIiBXRUxDT01FICIgJXNcclxuIiwgbWQ1c2hhcmVk
> KTsNCiAgDQorICAgDQogICAgd2hpbGUgKHN0YXRlICE9IFVQREFURSkNCiAg
> ICAgIHsNCiAgICAgICAgZmZsdXNoIChvZmlsZSk7DQoqKioqKioqKioqKioq
> KioNCioqKiAyNDgsMjUzICoqKioNCi0tLSAyNjQsMjcyIC0tLS0NCiAgICAg
> ICAgY21kID0gcG9wM19jbWQgKGJ1Zik7DQogICAgICAgIGFyZyA9IHBvcDNf
> YXJncyAoYnVmKTsNCiAgDQorICAgICAgIGlmIChzdGF0ZSA9PSBUUkFOU0FD
> VElPTiAmJiBtYWlsYm94X2lzX3VwZGF0ZWQgKG1ib3gpKSANCisgCXBvcDNf
> YWJxdWl0KEVSUl9NQk9YX1NZTkMpOw0KKyAgICAgICANCiAgICAgICAgaWYg
> KHN0cmxlbiAoYXJnKSA+IFBPUF9NQVhDTURMRU4gfHwgc3RybGVuIChjbWQp
> ID4gUE9QX01BWENNRExFTikNCiAgCXN0YXR1cyA9IEVSUl9UT09fTE9ORzsN
> CiAgICAgICAgZWxzZSBpZiAoc3RybGVuIChjbWQpID4gNCkNCioqKioqKioq
> KioqKioqKg0KKioqIDM1OCwzNzIgKioqKg0KLS0tIDM3NywzOTUgLS0tLQ0K
> ICAgICAgew0KICAgICAgICBpZiAoY2hpbGRyZW4gPiBtYXhjaGlsZHJlbikN
> CiAgICAgICAgICB7DQorICAgICAgICAgICBzeXNsb2coTE9HX0VSUiwgInRv
> byBtYW55IGNoaWxkcmVuIik7DQogICAgICAgICAgICBwYXVzZSAoKTsNCiAg
> ICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCisgICAgICAgDQog
> ICAgICAgIGNvbm5mZCA9IGFjY2VwdCAobGlzdGVuZmQsIChzdHJ1Y3Qgc29j
> a2FkZHIgKikmY2xpZW50LCAmc2l6ZSk7DQogICAgICAgIGlmIChjb25uZmQg
> PT0gLTEpDQogICAgICAgICAgew0KICAgICAgICAgICAgaWYgKGVycm5vID09
> IEVJTlRSKQ0KICAJICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgc3lzbG9n
> IChMT0dfRVJSLCAiYWNjZXB0OiAlcyIsIHN0cmVycm9yIChlcnJubykpOw0K
> KyAJICBpZiAoZXJybm89PTApDQorIAkJICBjb250aW51ZTsNCiAgICAgICAg
> ICAgIGV4aXQgKC0xKTsNCiAgICAgICAgICB9DQogIA0KKioqKioqKioqKioq
> KioqDQoqKiogMzc2LDM4MyAqKioqDQogICAgICAgIGVsc2UgaWYgKHBpZCA9
> PSAwKSAvKiBDaGlsZC4gICovDQogICAgICAgICAgew0KICAgICAgICAgICAg
> Y2xvc2UgKGxpc3RlbmZkKTsNCi0gCSAgLyogc3lzbG9nKCk7IEZJWE1FIGxv
> ZyB0aGUgaW5mbyBvbiB0aGUgY29ubmVjdGlpbmcgY2xpZW50LiAgKi8NCiAg
> ICAgICAgICAgIHBvcDNfbWFpbmxvb3AgKGNvbm5mZCwgY29ubmZkKTsNCiAg
> ICAgICAgICB9DQogICAgICAgIGVsc2UNCiAgICAgICAgICB7DQotLS0gMzk5
> LDQwNiAtLS0tDQogICAgICAgIGVsc2UgaWYgKHBpZCA9PSAwKSAvKiBDaGls
> ZC4gICovDQogICAgICAgICAgew0KICAgICAgICAgICAgY2xvc2UgKGxpc3Rl
> bmZkKTsNCiAgICAgICAgICAgIHBvcDNfbWFpbmxvb3AgKGNvbm5mZCwgY29u
> bmZkKTsNCisgCSAgZXhpdCgwKTsNCiAgICAgICAgICB9DQogICAgICAgIGVs
> c2UNCiAgICAgICAgICB7DQoqKioqKioqKioqKioqKioNCioqKiAzODUsMzg4
> ICoqKioNCi0tLSA0MDgsNDE3IC0tLS0NCiAgICAgICAgICB9DQogICAgICAg
> IGNsb3NlIChjb25uZmQpOw0KICAgICAgfQ0KKyB9DQorIA0KKyANCisgdm9p
> ZCBzeXNsb2dfZXJyb3JfcHJpbnRlcihjb25zdCBjaGFyICpmbXQsIHZhX2xp
> c3QgYXApDQorIHsNCisgICAgIHZzeXNsb2coTE9HX0NSSVQsIGZtdCwgYXAp
> Ow0KICB9DQpJbmRleDogcG9wM2QvcG9wM2QuaA0KPT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL3BvcDNkL3BvcDNk
> Lmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjE0DQpkaWZmIC1jIC1iIC13
> IC1yMS4xNCBwb3AzZC5oDQoqKiogcG9wM2QvcG9wM2QuaAkyMDAxLzA0LzE0
> IDIwOjE3OjI3CTEuMTQNCi0tLSBwb3AzZC9wb3AzZC5oCTIwMDEvMDQvMjEg
> MTU6MTE6MTANCioqKioqKioqKioqKioqKg0KKioqIDE1OCwxNjMgKioqKg0K
> LS0tIDE1OCwxNjQgLS0tLQ0KICAjZGVmaW5lIEVSUl9OT19PRklMRSAgICAx
> NA0KICAjZGVmaW5lIEVSUl9USU1FT1VUCTE1DQogICNkZWZpbmUgRVJSX1VO
> S05PV04JMTYNCisgI2RlZmluZSBFUlJfTUJPWF9TWU5DICAgMTcNCiAgDQog
> ICNpZm5kZWYgX19QDQogICMgaWZkZWYgX19TVERDX18NCkluZGV4OiBwb3Az
> ZC9zaWduYWwuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6
> IC9jdnMvbWFpbHV0aWxzL3BvcDNkL3NpZ25hbC5jLHYNCnJldHJpZXZpbmcg
> cmV2aXNpb24gMS4yDQpkaWZmIC1jIC1iIC13IC1yMS4yIHNpZ25hbC5jDQoq
> KiogcG9wM2Qvc2lnbmFsLmMJMjAwMS8wMS8xMSAwNDo0NjozNAkxLjINCi0t
> LSBwb3AzZC9zaWduYWwuYwkyMDAxLzA0LzIxIDE1OjExOjExDQoqKioqKioq
> KioqKioqKioNCioqKiA4LDE0ICoqKioNCiAgICBwaWRfdCBwaWQ7DQogICAg
> aW50IHN0YXR1czsNCiAgDQotICAgKHZvaWQpc2lnbm87DQogICAgd2hpbGUg
> KCAocGlkID0gd2FpdHBpZCgtMSwgJnN0YXR1cywgV05PSEFORykpID4gMCkN
> CiAgICAgICAgLS1jaGlsZHJlbjsNCiAgfQ0KLS0tIDgsMTQgLS0tLQ0KICAg
> IHBpZF90IHBpZDsNCiAgICBpbnQgc3RhdHVzOw0KICANCiAgICB3aGlsZSAo
> IChwaWQgPSB3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5HKSkgPiAwKQ0K
> ICAgICAgICAtLWNoaWxkcmVuOw0KKyAgIHNpZ25hbChzaWdubywgcG9wM19z
> aWdjaGxkKTsNCiAgfQ0KSW5kZXg6IHBvcDNkL3VzZXIuYw0KPT09PT09PT09
> PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
> PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvbWFpbHV0aWxzL3BvcDNk
> L3VzZXIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTANCmRpZmYgLWMg
> LWIgLXcgLXIxLjEwIHVzZXIuYw0KKioqIHBvcDNkL3VzZXIuYwkyMDAxLzA0
> LzE0IDIwOjE3OjI3CTEuMTANCi0tLSBwb3AzZC91c2VyLmMJMjAwMS8wNC8y
> MSAxNToxMToxMQ0KKioqKioqKioqKioqKioqDQoqKiogMjQsMzIgKioqKg0K
> ICBzdGF0aWMgY2hhciAqX3VzZXI7DQogIHN0YXRpYyBpbnQgX3BlcnIgPSAw
> Ow0KICANCiEgI2RlZmluZSBQQU1fRVJST1IgaWYgKF9wZXJyIHx8IChwYW1l
> cnJvciAhPSBQQU1fU1VDQ0VTUykpIHsgXA0KISAgICAgcGFtX2VuZChwYW1o
> LCAwKTsgXA0KISAgICAgcmV0dXJuIEVSUl9CQURfTE9HSU47IH0NCiAgDQog
> IHN0YXRpYyBpbnQNCiAgUEFNX2dudXBvcDNkX2NvbnYgKGludCBudW1fbXNn
> LCBjb25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2UgKiptc2csIHN0cnVjdCBwYW1f
> cmVzcG9uc2UgKipyZXNwLCB2b2lkICphcHBkYXRhX3B0cikNCi0tLSAyNCwz
> MSAtLS0tDQogIHN0YXRpYyBjaGFyICpfdXNlcjsNCiAgc3RhdGljIGludCBf
> cGVyciA9IDA7DQogIA0KISAjZGVmaW5lIFBBTV9FUlJPUiBpZiAoX3BlcnIg
> fHwgKHBhbWVycm9yICE9IFBBTV9TVUNDRVNTKSkgXA0KISAgICAgZ290byBw
> YW1fZXJybGFiOwkNCiAgDQogIHN0YXRpYyBpbnQNCiAgUEFNX2dudXBvcDNk
> X2NvbnYgKGludCBudW1fbXNnLCBjb25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2Ug
> Kiptc2csIHN0cnVjdCBwYW1fcmVzcG9uc2UgKipyZXNwLCB2b2lkICphcHBk
> YXRhX3B0cikNCioqKioqKioqKioqKioqKg0KKioqIDE0NSwxNTIgKioqKg0K
> LS0tIDE0NCwxNTQgLS0tLQ0KICAJICBzcHcgPSBnZXRzcG5hbSAoKGNoYXIg
> KilhcmcpOw0KICAJICBpZiAoc3B3ID09IE5VTEwgfHwgc3RyY21wIChzcHct
> PnNwX3B3ZHAsIGNyeXB0IChwYXNzLCBzcHctPnNwX3B3ZHApKSkNCiAgI2Vu
> ZGlmIC8qIEhBVkVfU0hBRE9XX0ggKi8NCisgCSAgewkgICANCisgCSAgICBz
> eXNsb2cgKExPR19JTkZPLCAiVXNlciAnJXMnOiBhdXRoZW50aWNhdGlvbiBm
> YWxlZCIsIGFyZyk7CSAgDQogIAkgICAgcmV0dXJuIEVSUl9CQURfTE9HSU47
> DQogIAkgIH0NCisgCX0NCiAgI2Vsc2UgLyogIVVTRV9MSUJQQU0gKi8NCiAg
> ICAgICAgX3VzZXIgPSAoY2hhciAqKSBhcmc7DQogICAgICAgIF9wd2QgPSBw
> YXNzOw0KKioqKioqKioqKioqKioqDQoqKiogMTYwLDE2NyAqKioqDQogICAg
> ICAgIFBBTV9FUlJPUjsNCiAgICAgICAgcGFtZXJyb3IgPSBwYW1fc2V0Y3Jl
> ZCAocGFtaCwgUEFNX0VTVEFCTElTSF9DUkVEKTsNCiAgICAgICAgUEFNX0VS
> Uk9SOw0KICAgICAgICBwYW1fZW5kIChwYW1oLCBQQU1fU1VDQ0VTUyk7DQoh
> ICAgICAgIG9wZW5sb2cgKCJnbnUtcG9wM2QiLCBMT0dfUElELCBMT0dfTUFJ
> TCk7DQogICNlbmRpZiAvKiBVU0VfTElCUEFNICovDQogIA0KICANCi0tLSAx
> NjIsMTc0IC0tLS0NCiAgICAgICAgUEFNX0VSUk9SOw0KICAgICAgICBwYW1l
> cnJvciA9IHBhbV9zZXRjcmVkIChwYW1oLCBQQU1fRVNUQUJMSVNIX0NSRUQp
> Ow0KICAgICAgICBQQU1fRVJST1I7DQorIHBhbV9lcnJsYWI6ICAgICAgDQog
> ICAgICAgIHBhbV9lbmQgKHBhbWgsIFBBTV9TVUNDRVNTKTsNCiEgICAgICAg
> b3BlbmxvZyAoImdudS1wb3AzZCIsIExPR19QSUQsIExPR19GQUNJTElUWSk7
> DQohICAgICAgIGlmIChwYW1lcnJvciAhPSBQQU1fU1VDQ0VTUykgewkJCQkN
> CiEgCSAgICAgIHN5c2xvZyAoTE9HX0lORk8sICJVc2VyICclcyc6IGF1dGhl
> bnRpY2F0aW9uIGZhbGVkIiwgX3VzZXIpOw0KISAJICAgICAgcmV0dXJuIEVS
> Ul9CQURfTE9HSU47DQohICAgICAgIH0NCiAgI2VuZGlmIC8qIFVTRV9MSUJQ
> QU0gKi8NCiAgDQogIA0KKioqKioqKioqKioqKioqDQoqKiogMjEwLDIxNSAq
> KioqDQotLS0gMjE3LDIyMyAtLS0tDQogICAgICB9DQogICAgZWxzZSBpZiAo
> c3RyY2FzZWNtcCAoY21kLCAiUVVJVCIpID09IDApDQogICAgICB7DQorICAg
> ICAgIHN5c2xvZyhMT0dfSU5GTywgIlBvc3NpYmxlIHByb2JlIG9mIGFjY291
> bnQgJyVzJyIsIGFyZyk7CSAgICANCiAgICAgICAgZnJlZSAoY21kKTsNCiAg
> ICAgICAgcmV0dXJuIHBvcDNfcXVpdCAocGFzcyk7DQogICAgICB9DQo=
> ---559023410-851401618-987874947=:8720
> Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="error.c"
> Content-Transfer-Encoding: BASE64
> Content-ID: <address@hidden>
> Content-Description: error.s
> 
> LyogR05VIG1haWx1dGlscyAtIGEgc3VpdGUgb2YgdXRpbGl0aWVzIGZvciBl
> bGVjdHJvbmljIG1haWwNCiAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwg
> MjAwMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCg0KICAgVGhp
> cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
> dXRlIGl0IGFuZC9vciBtb2RpZnkNCiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv
> ZiB0aGUgR05VIEdlbmVyYWwgTGlicmFyeSBQdWJsaWMgTGljZW5zZSBhcyBw
> dWJsaXNoZWQgYnkNCiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
> IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikNCiAgIGFu
> eSBsYXRlciB2ZXJzaW9uLg0KDQogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
> YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiAg
> IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
> bXBsaWVkIHdhcnJhbnR5IG9mDQogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
> TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQogICBH
> TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
> dGFpbHMuDQoNCiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
> b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiAg
> IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo
> ZSBGcmVlIFNvZnR3YXJlDQogICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFz
> cyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4gICovDQoNCiNpZmRl
> ZiBIQVZFX0NPTkZJR19IDQojIGluY2x1ZGUgPGNvbmZpZy5oPg0KI2VuZGlm
> DQoNCiNpbmNsdWRlIDxzdGRsaWIuaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0K
> I2luY2x1ZGUgPHN0ZGFyZy5oPg0KI2luY2x1ZGUgPG1haWx1dGlscy9lcnJv
> ci5oPg0KDQpzdGF0aWMgdm9pZCBkZWZhdWx0X2Vycm9yX3ByaW50ZXIoY29u
> c3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQ0Kew0KICAgIHZmcHJpbnRmKHN0
> ZGVyciwgZm10LCBhcCk7DQogICAgZnByaW50ZihzdGRlcnIsICJcbiIpOw0K
> fQ0KDQplcnJvcl9wZm5fdCBlcnJvcl9wcmludGVyID0gZGVmYXVsdF9lcnJv
> cl9wcmludGVyOw0KDQp2b2lkDQplcnJvcihjaGFyICpmbXQsIC4uLikNCnsN
> CiAgICB2YV9saXN0IGFwOw0KDQogICAgaWYgKCFlcnJvcl9wcmludGVyKQ0K
> CXJldHVybjsNCiAgICB2YV9zdGFydChhcCwgZm10KTsNCiAgICAoKmVycm9y
> X3ByaW50ZXIpKGZtdCwgYXApOw0KICAgIHZhX2VuZChhcCk7DQp9DQoNCnZv
> aWQNCmVycm9yX3NldF9wcmludChlcnJvcl9wZm5fdCBwZm4pDQp7DQogICAg
> ZXJyb3JfcHJpbnRlciA9IHBmbjsNCn0NCg0K
> ---559023410-851401618-987874947=:8720
> Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="error.h"
> Content-Transfer-Encoding: BASE64
> Content-ID: <address@hidden>
> Content-Description: error.h
> 
> I2lmbmRlZiBfRVJST1JfSA0KI2RlZmluZSBfRVJST1JfSA0KDQojaWZuZGVm
> IF9fUA0KI2lmZGVmIF9fU1REQ19fDQojZGVmaW5lIF9fUChhcmdzKSBhcmdz
> DQojZWxzZQ0KI2RlZmluZSBfX1AoYXJncykgKCkNCiNlbmRpZg0KI2VuZGlm
> IC8qX19QICovDQoNCnR5cGVkZWYgaW50ICgqZXJyb3JfcGZuX3QpKCk7DQoN
> CnZvaWQgZXJyb3IoY2hhciAqZm10LCAuLi4pOw0Kdm9pZCBlcnJvcl9zZXRf
> cHJpbnQoZXJyb3JfcGZuX3QpOw0KDQojZW5kaWYNCg==
> ---559023410-851401618-987874947=:8720--
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]