<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>5174</bug_id>
          
          <creation_ts>2005-09-28 15:48:12 -0700</creation_ts>
          <short_desc>Add support for compiling on Linux (likely to help for other POSIX systems too)</short_desc>
          <delta_ts>2005-10-03 18:40:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="George Staikos">staikos</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20862</commentid>
    <comment_count>0</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-09-28 15:48:12 -0700</bug_when>
    <thetext>This patch (ongoing) adds support for compilation on POSIX platforms as the 
default.  Apple, Win32, Linux, etc specific code is specialized.  Fixes #if 
tests to be more specific and accurate, fixes warnings, compile errors, etc.  
Work remains, but this allows compilation on Linux.  Needs testing on Apple 
and Win32 again as I haven&apos;t had time to test on those platforms yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20863</commentid>
    <comment_count>1</comment_count>
      <attachid>4085</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-09-28 15:48:42 -0700</bug_when>
    <thetext>Created attachment 4085
Patch for compilation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20967</commentid>
    <comment_count>2</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-09-29 20:39:56 -0700</bug_when>
    <thetext>The following snipped makes collector work properly on Linux: 
 
    void *stackBase = 0; 
    pthread_attr_t sattr; 
    int rc; 
    rc = pthread_getattr_np(pthread_self(), &amp;sattr); 
    // Fails on Linux (?) 
    //rc = pthread_attr_getstack(&amp;sattr, &amp;stackBase, &amp;stackSize); 
    rc = pthread_attr_getstackaddr(&amp;sattr, &amp;stackBase); 
    assert(stackBase); 
 
With this applied, the patch now passes everything in the regression suite 
properly on Linux except Date stuff.  Failures: 
        ecma/Date/15.9.3.1-1.js 
        ecma/Date/15.9.3.1-2.js 
        ecma/Date/15.9.3.1-3.js 
        ecma/Date/15.9.3.1-4.js 
        ecma/Date/15.9.3.1-5.js 
        ecma/Date/15.9.3.2-1.js 
        ecma/Date/15.9.3.2-2.js 
        ecma/Date/15.9.3.2-3.js 
        ecma/Date/15.9.3.2-4.js 
        ecma/Date/15.9.3.2-5.js 
        ecma/Date/15.9.3.8-1.js 
        ecma/Date/15.9.3.8-2.js 
        ecma/Date/15.9.3.8-3.js 
        ecma/Date/15.9.3.8-4.js 
        ecma/Date/15.9.3.8-5.js 
        ecma/Date/15.9.4.2.js 
        ecma/Date/15.9.5.10-1.js 
        ecma/Date/15.9.5.10-6.js 
        ecma/Date/15.9.5.10-9.js 
        ecma/Date/15.9.5.12-1.js 
        ecma/Date/15.9.5.12-6.js 
        ecma/Date/15.9.5.14.js 
        ecma/Date/15.9.5.2-1.js 
        ecma/Date/15.9.5.2.js 
        ecma/Date/15.9.5.23-1.js 
        ecma/Date/15.9.5.23-10.js 
        ecma/Date/15.9.5.23-11.js 
        ecma/Date/15.9.5.23-12.js 
        ecma/Date/15.9.5.23-13.js 
        ecma/Date/15.9.5.23-14.js 
        ecma/Date/15.9.5.23-15.js 
        ecma/Date/15.9.5.23-16.js 
        ecma/Date/15.9.5.23-17.js 
        ecma/Date/15.9.5.23-18.js 
        ecma/Date/15.9.5.24-1.js 
        ecma/Date/15.9.5.24-2.js 
        ecma/Date/15.9.5.24-3.js 
        ecma/Date/15.9.5.24-4.js 
        ecma/Date/15.9.5.24-5.js 
        ecma/Date/15.9.5.24-6.js 
        ecma/Date/15.9.5.24-7.js 
        ecma/Date/15.9.5.24-8.js 
        ecma/Date/15.9.5.25-1.js 
        ecma/Date/15.9.5.26-1.js 
        ecma/Date/15.9.5.27-1.js 
        ecma/Date/15.9.5.29-1.js 
        ecma/Date/15.9.5.30-1.js 
        ecma/Date/15.9.5.31-1.js 
        ecma/Date/15.9.5.32-1.js 
        ecma/Date/15.9.5.33-1.js 
        ecma/Date/15.9.5.34-1.js 
        ecma/Date/15.9.5.35-1.js 
        ecma/Date/15.9.5.36-1.js 
        ecma/Date/15.9.5.36-2.js 
        ecma/Date/15.9.5.36-3.js 
        ecma/Date/15.9.5.36-4.js 
        ecma/Date/15.9.5.36-5.js 
        ecma/Date/15.9.5.36-6.js 
        ecma/Date/15.9.5.36-7.js 
        ecma/Date/15.9.5.37-1.js 
        ecma/Date/15.9.5.37-2.js 
        ecma/Date/15.9.5.37-3.js 
        ecma/Date/15.9.5.37-4.js 
        ecma/Date/15.9.5.37-5.js 
        ecma/Date/15.9.5.5.js 
        ecma/Date/15.9.5.6.js 
        ecma/Date/15.9.5.8.js 
        ecma_3/Date/15.9.5.3.js 
        ecma_3/Date/15.9.5.4.js 
        ecma_3/Date/15.9.5.6.js 
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21087</commentid>
    <comment_count>3</comment_count>
      <attachid>4134</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-10-01 12:26:03 -0700</bug_when>
    <thetext>Created attachment 4134
Updated patch

This fixes almost all regressions and cleans up the code a bit more.  There are
7 regressions remaining in Date and none elsewhere.  They need further
investigation because the actual bug seems to be quite strange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21090</commentid>
    <comment_count>4</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-10-01 12:59:35 -0700</bug_when>
    <thetext>My tests in Mozilla and extended testing of the code here indicates that the 
testcases are wrong.  How are these passing in JSCore on OS X? </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21218</commentid>
    <comment_count>5</comment_count>
      <attachid>4134</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-02 21:03:56 -0700</bug_when>
    <thetext>Comment on attachment 4134
Updated patch

Great direction to go, being portable to POSIX!

The switches to using __APPLE__ for some things that are currently WIN32 seem
great, although I&apos;m not certain __APPLE__ is the best way to check for the Mac
OS X platform. But we can easily switch to something else with a global
replace, so it seems fine to use it for now.

On the other hand, I&apos;m not at all happy with all the changes to use #if defined
X rather than #if X. Is there really a compiler in use where you get warnings
for using #if X when X is not defined? If so, then I suppose we can switch
uniformly to use #if defined X, but we&apos;ve intentionally not used that style up
until now, and I don&apos;t want to change unless there&apos;s a good reason. Is this
some feature in a new version of gcc?

I&apos;m also not clear on why the seemingly not-entirely-portable code is the
&quot;else&quot; case. Is this final case truly a &quot;POSIX&quot; case, or is it simply Linux
being treated as the default? I don&apos;t understand why pthread_getattr_np is more
portable than pthread_get_stack_addr_np. I sense Linux bias here, and similarly
in the config.h header. Maybe we should seek an ifdef about the presence of
some non-portable pthreads extensions, or invent our own and put it in
config.h.

I see some left-in fprintf and fflush calls. We don&apos;t want to land that, I
don&apos;t think.

Must the tm_year/tm_mon call go inside an __APPLE__ ifdef? I can see how it&apos;s
not needed on all platforms, but is it harmful on any?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21224</commentid>
    <comment_count>6</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-10-02 21:24:20 -0700</bug_when>
    <thetext>On Monday 03 October 2005 00:03, you wrote: 
&gt; The switches to using __APPLE__ for some things that are currently WIN32 
&gt; seem great, although I&apos;m not certain __APPLE__ is the best way to check for 
&gt; the Mac OS X platform. But we can easily switch to something else with a 
&gt; global replace, so it seems fine to use it for now. 
 
  Just tell me which one you want and I&apos;m perfectly happy to switch to it.  
There should be a system-level one already defined, right? 
 
&gt; On the other hand, I&apos;m not at all happy with all the changes to use #if 
&gt; defined X rather than #if X. Is there really a compiler in use where you 
&gt; get warnings for using #if X when X is not defined? If so, then I suppose 
&gt; we can switch uniformly to use #if defined X, but we&apos;ve intentionally not 
&gt; used that style up until now, and I don&apos;t want to change unless there&apos;s a 
&gt; good reason. Is this some feature in a new version of gcc? 
 
  Older gcc versions definitely warn (at best) for #if X when X is not 
defined.  There is also the case of the #defines not being set causing 
somewhat unpredictable behavior.  I had at least one case where code was being 
compiled that really shouldn&apos;t have been. 
 
&gt; I&apos;m also not clear on why the seemingly not-entirely-portable code is the 
&gt; &quot;else&quot; case. Is this final case truly a &quot;POSIX&quot; case, or is it simply Linux 
&gt; being treated as the default? 
 
   Which case do you see this?  I&apos;m checking the manpages for calls in there 
to make sure they&apos;re portable.  I was trying to put the &quot;fallback&quot; or &quot;least 
common denominator&quot; case into the &quot;else&quot;.  Win32 and OSX specific code surely 
don&apos;t fall into that category. 
 
&gt; I don&apos;t understand why pthread_getattr_np is  
&gt; more portable than pthread_get_stack_addr_np.  
 
   pthread_attr_getstack is completely broken on my Linux system and 
pthread_get_stackaddr_np isn&apos;t available.  I get a warning that 
pthread_attr_getstackaddr is deprecated, but the alternative is simply not 
useful.  Hence the comment...  I haven&apos;t had a chance to check OS X, but is 
pthread_attr_getstackaddr available and functional?  It&apos;s apparently in IEEE 
1003.1, but does have issues. 
 
&gt; I sense Linux bias here, and  
&gt; similarly in the config.h header. Maybe we should seek an ifdef about the 
&gt; presence of some non-portable pthreads extensions, or invent our own and 
&gt; put it in config.h. 
 
   That config.h header is quite the hack and needs to be cleaned up IMHO.  
Anyway there is no Linux bias.  I was trying to restructure so that anything 
that isn&apos;t very basic POSIX-compliant is considered the &quot;else&quot; case.  In most 
cases Mac OS X should also take this case, and WIN32 should be most often the 
&quot;special&quot; case.  My goal is to make this code compile on every platform I can 
get access to. 
 
&gt; I see some left-in fprintf and fflush calls. We don&apos;t want to land that, I 
&gt; don&apos;t think. 
 
  Ooops, unclean patch.  Sorry.  Please remove those entirely.  They&apos;re a 
relic of further debugging work I was doing. 
 
&gt; Must the tm_year/tm_mon call go inside an __APPLE__ ifdef? I can see how 
&gt; it&apos;s not needed on all platforms, but is it harmful on any? 
 
  Yes, testcases fail with it in there.  At least on Linux they do.  That code 
seems entirely related to CF*. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21278</commentid>
    <comment_count>7</comment_count>
      <attachid>4185</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-10-03 12:48:12 -0700</bug_when>
    <thetext>Created attachment 4185
Updated patch

This addresses the printfs, reduces the amount of code that is APPLE_CHANGES,
fixes almost all testcases that pass on OS X and didn&apos;t on Linux, and cleans it
up a bit more.	I think it addresses the major issues Darin mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21279</commentid>
    <comment_count>8</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2005-10-03 13:02:37 -0700</bug_when>
    <thetext>FYI, here is a run of JSCore on Linux with the latest patch: 
 
** Danger, Will Robinson! Danger! The following failures have been introduced: 
        ecma_3/Date/15.9.5.6.js 
 
You fixed the following test: 
        ecma_3/Date/15.9.5.7.js 
 
1 regression found. 
1 test fixed. 
 
 
The regression is toLocale* which is still using the old Linux implementation, 
known broken, and also an issue in KJS.  I guess there is a bug in the JSCore 
Apple toLocale* code though, since we somehow also &quot;fixed&quot; one of those 
bugs. :-) 
 
It would be nice to get this patch in soon so that I can move on to fixing 
bugs and creating a build system.  I&apos;m building patches upon patches at this 
point. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21302</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-10-03 18:07:27 -0700</bug_when>
    <thetext>I intergrated this with a few tweaks. Going to land shortly. I got rid of the use of defined() for the postive 
case, got rid of /*exec*/ entirely, and clearly flagged the nonportable function used in the portable posix 
case of the thread code.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4085</attachid>
            <date>2005-09-28 15:48:42 -0700</date>
            <delta_ts>2005-10-01 12:26:03 -0700</delta_ts>
            <desc>Patch for compilation</desc>
            <filename>jscore-3.patch</filename>
            <type>text/plain</type>
            <size>10254</size>
            <attacher name="George Staikos">staikos</attacher>
            
              <data encoding="base64">SW5kZXg6IGtqcy9jb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9K
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
NwpkaWZmIC11IC0zIC1wIC1yMS40NyBjb2xsZWN0b3IuY3BwCi0tLSBranMvY29sbGVjdG9yLmNw
cAkyOCBTZXAgMjAwNSAwMjoyNTo0OSAtMDAwMAkxLjQ3CisrKyBranMvY29sbGVjdG9yLmNwcAky
OCBTZXAgMjAwNSAyMjo0OTo1OCAtMDAwMApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgPHNl
dGptcC5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotI2lmICFXSU4zMgorI2lmIGRlZmluZWQo
QVBQTEUpCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2lu
Y2x1ZGUgPHB0aHJlYWQuaD4KQEAgLTM3LDEwICszNywxMiBAQAogI2luY2x1ZGUgPG1hY2gvdGFz
ay5oPgogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgogCi0jZWxzZQorI2VsaWYgZGVmaW5l
ZChXSU4zMikKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorI2Vsc2UKKwogI2VuZGlmCiAKIHVz
aW5nIHN0ZDo6bWF4OwpAQCAtMTgwLDcgKzE4Miw3IEBAIGFsbG9jYXRlTmV3QmxvY2s6CiAgIHJl
dHVybiBuZXdDZWxsOwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBkZWZpbmVk
KEtKU19NVUxUSVBMRV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiBzdHJ1Y3Qg
Q29sbGVjdG9yOjpUaHJlYWQgewogICBUaHJlYWQocHRocmVhZF90IHB0aHJlYWQsIG1hY2hfcG9y
dF90IG10aHJlYWQpIDogcG9zaXhUaHJlYWQocHRocmVhZCksIG1hY2hUaHJlYWQobXRocmVhZCkg
e30KQEAgLTI4OCwxNiArMjkwLDE5IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRocmVh
ZENvbnNlcnYKICAgICBqbXBfYnVmIHJlZ2lzdGVyczsKICAgICBzZXRqbXAocmVnaXN0ZXJzKTsK
IAotI2lmICFXSU4zMgorI2lmIGRlZmluZWQoQVBQTEUpCiAgICAgcHRocmVhZF90IHRocmVhZCA9
IHB0aHJlYWRfc2VsZigpOwogICAgIHZvaWQgKnN0YWNrQmFzZSA9IHB0aHJlYWRfZ2V0X3N0YWNr
YWRkcl9ucCh0aHJlYWQpOwotI2Vsc2UKKyNlbGlmIGRlZmluZWQoV0lOMzIpCiAgICAgTlRfVElC
ICpwVGliOwogICAgIF9fYXNtIHsKICAgICAgICAgTU9WIEVBWCwgRlM6WzE4aF0KICAgICAgICAg
TU9WIHBUaWIsIEVBWAogICAgIH0KICAgICB2b2lkICpzdGFja0Jhc2UgPSAodm9pZCAqKXBUaWIt
PlN0YWNrQmFzZTsKKyNlbHNlCisgICAgYWJvcnQoKTsKKyAgICB2b2lkICpzdGFja0Jhc2U7IC8v
IEZJWE1FCiAjZW5kaWYKIAogICAgIGludCBkdW1teTsKQEAgLTMwNiw3ICszMTEsNyBAQCB2b2lk
IENvbGxlY3Rvcjo6bWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2CiAgICAgbWFya1N0YWNrT2JqZWN0
c0NvbnNlcnZhdGl2ZWx5KHN0YWNrUG9pbnRlciwgc3RhY2tCYXNlKTsKIH0KIAotI2lmIEtKU19N
VUxUSVBMRV9USFJFQURTCisjaWYgZGVmaW5lZChLSlNfTVVMVElQTEVfVEhSRUFEUykgJiYgS0pT
X01VTFRJUExFX1RIUkVBRFMKIAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVzd29yZF90OyAvLyB3
b3JkIHNpemUsIGFzc3VtZWQgdG8gYmUgZWl0aGVyIDMyIG9yIDY0IGJpdAogCkBAIC0zNTMsNyAr
MzU4LDcgQEAgdm9pZCBDb2xsZWN0b3I6Om1hcmtTdGFja09iamVjdHNDb25zZXJ2YQogewogICBt
YXJrQ3VycmVudFRocmVhZENvbnNlcnZhdGl2ZWx5KCk7CiAKLSNpZiBLSlNfTVVMVElQTEVfVEhS
RUFEUworI2lmIGRlZmluZWQoS0pTX01VTFRJUExFX1RIUkVBRFMpICYmIEtKU19NVUxUSVBMRV9U
SFJFQURTCiAgIGZvciAoVGhyZWFkICp0aHJlYWQgPSByZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFk
ICE9IE5VTEw7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewogICAgIGlmICh0aHJlYWQtPnBvc2l4
VGhyZWFkICE9IHB0aHJlYWRfc2VsZigpKSB7CiAgICAgICBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2
YXRpdmVseSh0aHJlYWQpOwpJbmRleDoga2pzL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9ranMvY29uZmlnLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuOQpkaWZmIC11IC0zIC1wIC1yMS45IGNvbmZpZy5oCi0tLSBranMvY29uZmlnLmgJMjcg
U2VwIDIwMDUgMjI6MzY6NDggLTAwMDAJMS45CisrKyBranMvY29uZmlnLmgJMjggU2VwIDIwMDUg
MjI6NDk6NTggLTAwMDAKQEAgLTEsNCArMSw0IEBACi0jaWYgIVdJTjMyCisjaWYgZGVmaW5lZChB
UFBMRSkKIAogI2RlZmluZSBIQVZFX0ZVTkNfSVNJTkYgMQogI2RlZmluZSBIQVZFX0ZVTkNfSVNO
QU4gMQpAQCAtNywxMiArNywyMiBAQAogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMQogI2RlZmlu
ZSBUSU1FX1dJVEhfU1lTX1RJTUUgMQogCi0jZWxzZQorI2VsaWYgZGVmaW5lZChXSU4zMikKIAog
I2RlZmluZSBIQVZFX0ZMT0FUX0ggMQogI2RlZmluZSBIQVZFX0ZVTkNfX0ZJTklURSAxCiAjZGVm
aW5lIEhBVkVfU1lTX1RJTUVCX0ggMQogCisjZWxzZQorCisjZGVmaW5lIEhBVkVfRlVOQ19JU0lO
RiAxCisjZGVmaW5lIEhBVkVfRlVOQ19JU05BTiAxCisjZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEK
KyNkZWZpbmUgSEFWRV9TWVNfUEFSQU1fSCAxCisjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxCisj
ZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxCisjZGVmaW5lIEhBVkVfRVJSTk9fSCAxCisKICNl
bmRpZgogCiAjZGVmaW5lIEhBVkVfRlVOQ19TVFJUT0xMIDEKSW5kZXg6IGtqcy9kYXRlX29iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9k
YXRlX29iamVjdC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTYKZGlmZiAtdSAtMyAtcCAt
cjEuNTYgZGF0ZV9vYmplY3QuY3BwCi0tLSBranMvZGF0ZV9vYmplY3QuY3BwCTIwIFNlcCAyMDA1
IDA4OjA3OjU3IC0wMDAwCTEuNTYKKysrIGtqcy9kYXRlX29iamVjdC5jcHAJMjggU2VwIDIwMDUg
MjI6NDk6NTggLTAwMDAKQEAgLTIwLDkgKzIwLDcgQEAKICAqCiAgKi8KIAotI2lmZGVmIEhBVkVf
Q09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgorI2luY2x1ZGUgImNvbmZpZy5o
IgogI2lmbmRlZiBIQVZFX1NZU19USU1FQl9ICiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMAog
I2VuZGlmCkBAIC00MSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHN5cy90aW1lYi5oPgogI2VuZGlm
CiAKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKICNp
ZmRlZiBIQVZFX1NZU19QQVJBTV9ICiAjICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICNlbmRpZiAv
LyBIQVZFX1NZU19QQVJBTV9ICkBAIC04NDcsNiArODQ5LDcgQEAgT2JqZWN0SW1wICpEYXRlT2Jq
ZWN0SW1wOjpjb25zdHJ1Y3QoRXhlYwogICAgIGRvdWJsZSB1dGMgPSBmbG9vcigoZG91YmxlKXRp
bWVidWZmZXIudGltZSAqIDEwMDAuMCArIChkb3VibGUpdGltZWJ1ZmZlci5taWxsaXRtKTsKICNl
bHNlCiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgLy8gRklYTUU6IG5vdCB0aHJlYWRzYWZl
CiAgICAgZ2V0dGltZW9mZGF5KCZ0diwgMEwpOwogICAgIGRvdWJsZSB1dGMgPSBmbG9vcigoZG91
YmxlKXR2LnR2X3NlYyAqIDEwMDAuMCArIChkb3VibGUpdHYudHZfdXNlYyAvIDEwMDAuMCk7CiAj
ZW5kaWYKSW5kZXg6IGtqcy9pZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjIwCmRpZmYgLXUgLTMgLXAgLXIxLjIwIGlkZW50aWZpZXIuY3BwCi0tLSBranMvaWRl
bnRpZmllci5jcHAJMjcgU2VwIDIwMDUgMjI6MzY6NDkgLTAwMDAJMS4yMAorKysga2pzL2lkZW50
aWZpZXIuY3BwCTI4IFNlcCAyMDA1IDIyOjQ5OjU5IC0wMDAwCkBAIC0yNSw3ICsyNSw3IEBACiAv
LyBwb3J0YWJsZSwgYW5kIGl0IHdvdWxkIGJlIGdvb2QgdG8gZmlndXJlIG91dCBhIDEwMCUgY2xl
YW4gd2F5IHRoYXQgc3RpbGwgYXZvaWRzIGNvZGUgdGhhdAogLy8gcnVucyBhdCBpbml0IHRpbWUu
CiAKLSNpZiAhV0lOMzIgLy8gY2FuJ3QgZ2V0IHRoaXMgdG8gY29tcGlsZSBvbiBWaXN1YWwgQysr
IHlldAorI2lmICFkZWZpbmVkKFdJTjMyKSAvLyBjYW4ndCBnZXQgdGhpcyB0byBjb21waWxlIG9u
IFZpc3VhbCBDKysgeWV0CiAjZGVmaW5lIEFWT0lEX1NUQVRJQ19DT05TVFJVQ1RPUlMgMQogI2Vu
ZGlmCiAKSW5kZXg6IGtqcy9pbnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNzQKZGlmZiAtdSAtMyAtcCAtcjEuNzQgaW50ZXJuYWwuY3BwCi0tLSBranMvaW50ZXJuYWwu
Y3BwCTI4IFNlcCAyMDA1IDIyOjAxOjE2IC0wMDAwCTEuNzQKKysrIGtqcy9pbnRlcm5hbC5jcHAJ
MjggU2VwIDIwMDUgMjI6NDk6NTkgLTAwMDAKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogI2luY2x1ZGUg
PGt4bWxjb3JlL0hhc2hNYXAuaD4KIAotI2lmIFdJTjMyCisjaWYgZGVmaW5lZChXSU4zMikKICNp
bmNsdWRlIDxmbG9hdC5oPgogI2RlZmluZSBjb3B5c2lnbihhLCBiKSBfY29weXNpZ24oYSwgYikK
ICNlbmRpZgpAQCAtNzMsMTUgKzczLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgCiAjZW5kaWYgLy8g
QVBQTEVfQ0hBTkdFUwogCi0jaWYgIUtKU19NVUxUSVBMRV9USFJFQURTCi0KLXN0YXRpYyBpbmxp
bmUgdm9pZCBpbml0aWFsaXplSW50ZXJwcmV0ZXJMb2NrKCkgeyB9Ci1zdGF0aWMgaW5saW5lIHZv
aWQgbG9ja0ludGVycHJldGVyKCkgeyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrSW50ZXJw
cmV0ZXIoKSB7IH0KLQotY29uc3QgaW50IGludGVycHJldGVyTG9ja0NvdW50ID0gMTsKLQotI2Vs
c2UKKyNpZiBkZWZpbmVkKEtKU19NVUxUSVBMRV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhS
RUFEUwogCiBzdGF0aWMgcHRocmVhZF9vbmNlX3QgaW50ZXJwcmV0ZXJMb2NrT25jZSA9IFBUSFJF
QURfT05DRV9JTklUOwogc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBpbnRlcnByZXRlckxvY2s7CkBA
IC0xMTEsMjYgKzEwMywzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrSW50ZXJwcmV0ZXIo
KQogICBwdGhyZWFkX211dGV4X3VubG9jaygmaW50ZXJwcmV0ZXJMb2NrKTsKIH0KIAorI2Vsc2UK
Kworc3RhdGljIGlubGluZSB2b2lkIGluaXRpYWxpemVJbnRlcnByZXRlckxvY2soKSB7IH0KK3N0
YXRpYyBpbmxpbmUgdm9pZCBsb2NrSW50ZXJwcmV0ZXIoKSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9p
ZCB1bmxvY2tJbnRlcnByZXRlcigpIHsgfQorCitjb25zdCBpbnQgaW50ZXJwcmV0ZXJMb2NrQ291
bnQgPSAxOworCiAjZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVu
ZGVmaW5lZEltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVmFsdWVJbXAg
KlVuZGVmaW5lZEltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICovKmV4ZWMqLywgVHlwZSkgY29u
c3QKK1ZhbHVlSW1wICpVbmRlZmluZWRJbXA6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqIC8qZXhl
YyovLCBUeXBlKSBjb25zdAogewogICByZXR1cm4gY29uc3RfY2FzdDxVbmRlZmluZWRJbXAgKj4o
dGhpcyk7CiB9CiAKLWJvb2wgVW5kZWZpbmVkSW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICovKmV4
ZWMqLykgY29uc3QKK2Jvb2wgVW5kZWZpbmVkSW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICogLypl
eGVjKi8pIGNvbnN0CiB7CiAgIHJldHVybiBmYWxzZTsKIH0KIAotZG91YmxlIFVuZGVmaW5lZElt
cDo6dG9OdW1iZXIoRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2RvdWJsZSBVbmRlZmluZWRJ
bXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gTmFO
OwogfQogCi1VU3RyaW5nIFVuZGVmaW5lZEltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICovKmV4ZWMq
LykgY29uc3QKK1VTdHJpbmcgVW5kZWZpbmVkSW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKiAvKmV4
ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuICJ1bmRlZmluZWQiOwogfQpAQCAtMTQyLDIyICsxNDIs
MjIgQEAgT2JqZWN0SW1wICpVbmRlZmluZWRJbXA6OnRvT2JqZWN0KEV4ZWNTdAogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTnVsbEltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1WYWx1ZUltcCAqTnVsbEltcDo6dG9QcmltaXRpdmUoRXhlY1N0
YXRlICovKmV4ZWMqLywgVHlwZSkgY29uc3QKK1ZhbHVlSW1wICpOdWxsSW1wOjp0b1ByaW1pdGl2
ZShFeGVjU3RhdGUgKiAvKmV4ZWMqLywgVHlwZSkgY29uc3QKIHsKICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8TnVsbEltcCAqPih0aGlzKTsKIH0KIAotYm9vbCBOdWxsSW1wOjp0b0Jvb2xlYW4oRXhlY1N0
YXRlICovKmV4ZWMqLykgY29uc3QKK2Jvb2wgTnVsbEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAq
IC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gZmFsc2U7CiB9CiAKLWRvdWJsZSBOdWxsSW1w
Ojp0b051bWJlcihFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAorZG91YmxlIE51bGxJbXA6OnRv
TnVtYmVyKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gMC4wOwogfQog
Ci1VU3RyaW5nIE51bGxJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0CitV
U3RyaW5nIE51bGxJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewog
ICByZXR1cm4gIm51bGwiOwogfQpAQCAtMTY5LDIyICsxNjksMjIgQEAgT2JqZWN0SW1wICpOdWxs
SW1wOjp0b09iamVjdChFeGVjU3RhdGUgKgogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQm9vbGVhbkltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1W
YWx1ZUltcCAqQm9vbGVhbkltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICovKmV4ZWMqLywgVHlw
ZSkgY29uc3QKK1ZhbHVlSW1wICpCb29sZWFuSW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKiAv
KmV4ZWMqLywgVHlwZSkgY29uc3QKIHsKICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Qm9vbGVhbkltcCAq
Pih0aGlzKTsKIH0KIAotYm9vbCBCb29sZWFuSW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICovKmV4
ZWMqLykgY29uc3QKK2Jvb2wgQm9vbGVhbkltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhl
YyovKSBjb25zdAogewogICByZXR1cm4gdmFsOwogfQogCi1kb3VibGUgQm9vbGVhbkltcDo6dG9O
dW1iZXIoRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2RvdWJsZSBCb29sZWFuSW1wOjp0b051
bWJlcihFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIHZhbCA/IDEuMCA6
IDAuMDsKIH0KIAotVVN0cmluZyBCb29sZWFuSW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKi8qZXhl
YyovKSBjb25zdAorVVN0cmluZyBCb29sZWFuSW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKiAvKmV4
ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIHZhbCA/ICJ0cnVlIiA6ICJmYWxzZSI7CiB9CkBAIC0x
OTgsMjIgKzE5OCwyMiBAQCBPYmplY3RJbXAgKkJvb2xlYW5JbXA6OnRvT2JqZWN0KEV4ZWNTdGF0
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdHJpbmdJbXAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVZhbHVlSW1wICpTdHJpbmdJbXA6OnRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSAqLypleGVjKi8sIFR5cGUpIGNvbnN0CitWYWx1ZUltcCAqU3RyaW5n
SW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKiAvKmV4ZWMqLywgVHlwZSkgY29uc3QKIHsKICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8U3RyaW5nSW1wICo+KHRoaXMpOwogfQogCi1ib29sIFN0cmluZ0lt
cDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0Citib29sIFN0cmluZ0ltcDo6
dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gKHZhbC5z
aXplKCkgPiAwKTsKIH0KIAotZG91YmxlIFN0cmluZ0ltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICov
KmV4ZWMqLykgY29uc3QKK2RvdWJsZSBTdHJpbmdJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqIC8q
ZXhlYyovKSBjb25zdAogewogICByZXR1cm4gdmFsLnRvRG91YmxlKCk7CiB9CiAKLVVTdHJpbmcg
U3RyaW5nSW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAorVVN0cmluZyBT
dHJpbmdJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1
cm4gdmFsOwogfQpJbmRleDoga2pzL2ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjQxCmRpZmYgLXUgLTMgLXAgLXIxLjQxIGludGVybmFsLmgKLS0tIGtqcy9pbnRlcm5hbC5o
CTI3IFNlcCAyMDA1IDIyOjM2OjQ5IC0wMDAwCTEuNDEKKysrIGtqcy9pbnRlcm5hbC5oCTI4IFNl
cCAyMDA1IDIyOjQ5OjU5IC0wMDAwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAic2NvcGVf
Y2hhaW4uaCIKICNpbmNsdWRlIDxreG1sY29yZS9TaGFyZWRQdHIuaD4KIAotI2lmICFXSU4zMgor
I2lmIGRlZmluZWQoQVBQTEUpCiAjZGVmaW5lIEtKU19NVUxUSVBMRV9USFJFQURTIDEKICNlbmRp
ZgogCkluZGV4OiBranMvcHJvdGVjdGVkX3ZhbHVlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tqcy9wcm90ZWN0ZWRfdmFsdWVzLmNwcCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXUgLTMgLXAgLXIxLjYgcHJvdGVjdGVkX3ZhbHVlcy5j
cHAKLS0tIGtqcy9wcm90ZWN0ZWRfdmFsdWVzLmNwcAkxOSBTZXAgMjAwNSAwNjo1NzoyOCAtMDAw
MAkxLjYKKysrIGtqcy9wcm90ZWN0ZWRfdmFsdWVzLmNwcAkyOCBTZXAgMjAwNSAyMjo0OTo1OSAt
MDAwMApAQCAtMjAsNiArMjAsOCBAQAogICoKICAqLwogCisjaW5jbHVkZSA8c3RkbGliLmg+CisK
ICNpbmNsdWRlICJwcm90ZWN0ZWRfdmFsdWVzLmgiCiAKICNpbmNsdWRlICJwb2ludGVyX2hhc2gu
aCIKSW5kZXg6IGt4bWxjb3JlL1RDU3lzdGVtQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9reG1sY29yZS9UQ1N5c3RlbUFsbG9jLmNwcCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLTMgLXAgLXIxLjEgVENTeXN0ZW1BbGxvYy5j
cHAKLS0tIGt4bWxjb3JlL1RDU3lzdGVtQWxsb2MuY3BwCTI3IFNlcCAyMDA1IDIyOjM2OjUzIC0w
MDAwCTEuMQorKysga3htbGNvcmUvVENTeXN0ZW1BbGxvYy5jcHAJMjggU2VwIDIwMDUgMjI6NTA6
MDAgLTAwMDAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCogVHJ5RGV2TWVtKHNpemVf
dCBzaXplLCBzaXplCiAgIH0KICAgCiAgIC8vIGNoZWNrIHRvIHNlZSBpZiB3ZSBoYXZlIGFueSBt
ZW1vcnkgbGVmdAotICBpZiAocGh5c21lbV9saW1pdCAhPSAwICYmIHBoeXNtZW1fYmFzZSArIHNp
emUgKyBleHRyYSA+IHBoeXNtZW1fbGltaXQpIHsKKyAgaWYgKHBoeXNtZW1fbGltaXQgIT0gMCAm
JiBwaHlzbWVtX2Jhc2UgKyBzaXplICsgZXh0cmEgPiAoc2l6ZV90KXBoeXNtZW1fbGltaXQpIHsK
ICAgICBkZXZtZW1fZmFpbHVyZSA9IHRydWU7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4134</attachid>
            <date>2005-10-01 12:26:03 -0700</date>
            <delta_ts>2005-10-03 12:48:12 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>jscore-4.patch</filename>
            <type>text/plain</type>
            <size>15422</size>
            <attacher name="George Staikos">staikos</attacher>
            
              <data encoding="base64">SW5kZXg6IGtqcy9jb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9K
YXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
NwpkaWZmIC11IC0zIC1wIC1yMS40NyBjb2xsZWN0b3IuY3BwCi0tLSBranMvY29sbGVjdG9yLmNw
cAkyOCBTZXAgMjAwNSAwMjoyNTo0OSAtMDAwMAkxLjQ3CisrKyBranMvY29sbGVjdG9yLmNwcAkx
IE9jdCAyMDA1IDE5OjI3OjE3IC0wMDAwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8c2V0
am1wLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jaWYgIVdJTjMyCisjaWYgZGVmaW5lZChf
X0FQUExFX18pCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgog
I2luY2x1ZGUgPHB0aHJlYWQuaD4KQEAgLTM3LDEwICszNywxMiBAQAogI2luY2x1ZGUgPG1hY2gv
dGFzay5oPgogI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgogCi0jZWxzZQorI2VsaWYgZGVm
aW5lZChXSU4zMikKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorI2Vsc2UKKwogI2VuZGlmCiAK
IHVzaW5nIHN0ZDo6bWF4OwpAQCAtMTgwLDcgKzE4Miw3IEBAIGFsbG9jYXRlTmV3QmxvY2s6CiAg
IHJldHVybiBuZXdDZWxsOwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBkZWZp
bmVkKEtKU19NVUxUSVBMRV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiBzdHJ1
Y3QgQ29sbGVjdG9yOjpUaHJlYWQgewogICBUaHJlYWQocHRocmVhZF90IHB0aHJlYWQsIG1hY2hf
cG9ydF90IG10aHJlYWQpIDogcG9zaXhUaHJlYWQocHRocmVhZCksIG1hY2hUaHJlYWQobXRocmVh
ZCkge30KQEAgLTI4OCwxNiArMjkwLDI1IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRo
cmVhZENvbnNlcnYKICAgICBqbXBfYnVmIHJlZ2lzdGVyczsKICAgICBzZXRqbXAocmVnaXN0ZXJz
KTsKIAotI2lmICFXSU4zMgorI2lmIGRlZmluZWQoX19BUFBMRV9fKQogICAgIHB0aHJlYWRfdCB0
aHJlYWQgPSBwdGhyZWFkX3NlbGYoKTsKICAgICB2b2lkICpzdGFja0Jhc2UgPSBwdGhyZWFkX2dl
dF9zdGFja2FkZHJfbnAodGhyZWFkKTsKLSNlbHNlCisjZWxpZiBkZWZpbmVkKFdJTjMyKQogICAg
IE5UX1RJQiAqcFRpYjsKICAgICBfX2FzbSB7CiAgICAgICAgIE1PViBFQVgsIEZTOlsxOGhdCiAg
ICAgICAgIE1PViBwVGliLCBFQVgKICAgICB9CiAgICAgdm9pZCAqc3RhY2tCYXNlID0gKHZvaWQg
KilwVGliLT5TdGFja0Jhc2U7CisjZWxzZQorICAgIHZvaWQgKnN0YWNrQmFzZSA9IDA7CisgICAg
cHRocmVhZF9hdHRyX3Qgc2F0dHI7CisgICAgaW50IHJjOworICAgIHJjID0gcHRocmVhZF9nZXRh
dHRyX25wKHB0aHJlYWRfc2VsZigpLCAmc2F0dHIpOworICAgIC8vIEZhaWxzIG9uIExpbnV4ICg/
KQorICAgIC8vcmMgPSBwdGhyZWFkX2F0dHJfZ2V0c3RhY2soJnNhdHRyLCAmc3RhY2tCYXNlLCAm
c3RhY2tTaXplKTsKKyAgICByYyA9IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIoJnNhdHRyLCAm
c3RhY2tCYXNlKTsKKyAgICBhc3NlcnQoc3RhY2tCYXNlKTsKICNlbmRpZgogCiAgICAgaW50IGR1
bW15OwpAQCAtMzA2LDcgKzMxNyw3IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRocmVh
ZENvbnNlcnYKICAgICBtYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbHkoc3RhY2tQb2ludGVy
LCBzdGFja0Jhc2UpOwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBkZWZpbmVk
KEtKU19NVUxUSVBMRV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiB0eXBlZGVm
IHVuc2lnbmVkIGxvbmcgdXN3b3JkX3Q7IC8vIHdvcmQgc2l6ZSwgYXNzdW1lZCB0byBiZSBlaXRo
ZXIgMzIgb3IgNjQgYml0CiAKQEAgLTM1Myw3ICszNjQsNyBAQCB2b2lkIENvbGxlY3Rvcjo6bWFy
a1N0YWNrT2JqZWN0c0NvbnNlcnZhCiB7CiAgIG1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZl
bHkoKTsKIAotI2lmIEtKU19NVUxUSVBMRV9USFJFQURTCisjaWYgZGVmaW5lZChLSlNfTVVMVElQ
TEVfVEhSRUFEUykgJiYgS0pTX01VTFRJUExFX1RIUkVBRFMKICAgZm9yIChUaHJlYWQgKnRocmVh
ZCA9IHJlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQgIT0gTlVMTDsgdGhyZWFkID0gdGhyZWFkLT5u
ZXh0KSB7CiAgICAgaWYgKHRocmVhZC0+cG9zaXhUaHJlYWQgIT0gcHRocmVhZF9zZWxmKCkpIHsK
ICAgICAgIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KHRocmVhZCk7CkluZGV4OiBranMv
Y29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3JlL2tq
cy9jb25maWcuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXUgLTMgLXAgLXIxLjkg
Y29uZmlnLmgKLS0tIGtqcy9jb25maWcuaAkyNyBTZXAgMjAwNSAyMjozNjo0OCAtMDAwMAkxLjkK
KysrIGtqcy9jb25maWcuaAkxIE9jdCAyMDA1IDE5OjI3OjE3IC0wMDAwCkBAIC0xLDQgKzEsNCBA
QAotI2lmICFXSU4zMgorI2lmIGRlZmluZWQoX19BUFBMRV9fKQogCiAjZGVmaW5lIEhBVkVfRlVO
Q19JU0lORiAxCiAjZGVmaW5lIEhBVkVfRlVOQ19JU05BTiAxCkBAIC03LDEyICs3LDIyIEBACiAj
ZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxCiAjZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxCiAK
LSNlbHNlCisjZWxpZiBkZWZpbmVkKFdJTjMyKQogCiAjZGVmaW5lIEhBVkVfRkxPQVRfSCAxCiAj
ZGVmaW5lIEhBVkVfRlVOQ19fRklOSVRFIDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRUJfSCAxCiAK
KyNlbHNlCisKKyNkZWZpbmUgSEFWRV9GVU5DX0lTSU5GIDEKKyNkZWZpbmUgSEFWRV9GVU5DX0lT
TkFOIDEKKyNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQorI2RlZmluZSBIQVZFX1NZU19QQVJBTV9I
IDEKKyNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEKKyNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1F
IDEKKyNkZWZpbmUgSEFWRV9FUlJOT19IIDEKKwogI2VuZGlmCiAKICNkZWZpbmUgSEFWRV9GVU5D
X1NUUlRPTEwgMQpJbmRleDoga2pzL2RhdGVfb2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2RhdGVfb2JqZWN0LmNwcCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS41OApkaWZmIC11IC0zIC1wIC1yMS41OCBkYXRlX29iamVjdC5jcHAKLS0t
IGtqcy9kYXRlX29iamVjdC5jcHAJMzAgU2VwIDIwMDUgMTY6MTY6MTMgLTAwMDAJMS41OAorKysg
a2pzL2RhdGVfb2JqZWN0LmNwcAkxIE9jdCAyMDA1IDE5OjI3OjE3IC0wMDAwCkBAIC0yMCw5ICsy
MCw3IEBACiAgKgogICovCiAKLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSA8Y29uZmln
Lmg+Ci0jZW5kaWYKKyNpbmNsdWRlICJjb25maWcuaCIKICNpZm5kZWYgSEFWRV9TWVNfVElNRUJf
SAogI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDAKICNlbmRpZgpAQCAtNDEsNiArMzksMTAgQEAK
ICNpbmNsdWRlIDxzeXMvdGltZWIuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9FUlJOT19ICisj
aW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAogIyAg
aW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjZW5kaWYgLy8gSEFWRV9TWVNfUEFSQU1fSApAQCAtNzYs
NyArNzgsNyBAQCBjb25zdCBkb3VibGUgbXNQZXJNaW51dGUgPSBtc1BlclNlY29uZCAqCiBjb25z
dCBkb3VibGUgbXNQZXJIb3VyID0gbXNQZXJNaW51dGUgKiBtaW51dGVzUGVySG91cjsKIGNvbnN0
IGRvdWJsZSBtc1BlckRheSA9IG1zUGVySG91ciAqIGhvdXJzUGVyRGF5OwogCi0jaWYgQVBQTEVf
Q0hBTkdFUworI2lmZGVmIEFQUExFX0NIQU5HRVMKIAogLy8gT3JpZ2luYWxseSwgd2Ugd3JvdGUg
b3VyIG93biBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgQ29yZSBGb3VuZGF0aW9uIGJlY2F1c2Ug
b2YgYSBwZXJmb3JtYW5jZSBwcm9ibGVtIGluIE1hYyBPUyBYIDEwLjIuCiAvLyBCdXQgd2UgbmVl
ZCB0byBrZWVwIHVzaW5nIHRoaXMgcmF0aGVyIHRoYW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgZnVu
Y3Rpb25zIGJlY2F1c2UgdGhpcyBoYW5kbGVzIGEgbGFyZ2VyIHJhbmdlIG9mIGRhdGVzLgpAQCAt
Mzg4LDcgKzM5MCw3IEBAIHN0YXRpYyBpbnQgd2Vla0RheShkb3VibGUgdCkKIAogc3RhdGljIGxv
bmcgdGltZVpvbmVPZmZzZXQoY29uc3Qgc3RydWN0IHRtICp0KQogewotI2lmIGRlZmluZWQgQlNE
IHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAhZGVmaW5l
ZChXSU4zMikKICAgcmV0dXJuIC0odC0+dG1fZ210b2ZmIC8gNjApOwogI2Vsc2UKICMgIGlmIGRl
ZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCkBAIC01ODIsNyArNTg0
LDcgQEAgVmFsdWVJbXAgKkRhdGVQcm90b0Z1bmNJbXA6OmNhbGxBc0Z1bmN0aQogCiAgIFZhbHVl
SW1wICpyZXN1bHQgPSBOVUxMOwogICBVU3RyaW5nIHM7Ci0jaWYgIUFQUExFX0NIQU5HRVMKKyNp
ZiAhZGVmaW5lZChBUFBMRV9DSEFOR0VTKSB8fCAhQVBQTEVfQ0hBTkdFUwogICBjb25zdCBpbnQg
YnVmc2l6ZT0xMDA7CiAgIGNoYXIgdGltZWJ1ZmZlcltidWZzaXplXTsKICAgQ1N0cmluZyBvbGRs
b2NhbGUgPSBzZXRsb2NhbGUoTENfVElNRSxOVUxMKTsKQEAgLTU5MSw3ICs1OTMsNiBAQCBWYWx1
ZUltcCAqRGF0ZVByb3RvRnVuY0ltcDo6Y2FsbEFzRnVuY3RpCiAjZW5kaWYKICAgVmFsdWVJbXAg
KnYgPSB0aGlzT2JqLT5pbnRlcm5hbFZhbHVlKCk7CiAgIGRvdWJsZSBtaWxsaSA9IHYtPnRvTnVt
YmVyKGV4ZWMpOwotICAKICAgaWYgKGlzTmFOKG1pbGxpKSkgewogICAgIHN3aXRjaCAoaWQpIHsK
ICAgICAgIGNhc2UgVG9TdHJpbmc6CkBAIC02MzcsNiArNjM4LDcgQEAgVmFsdWVJbXAgKkRhdGVQ
cm90b0Z1bmNJbXA6OmNhbGxBc0Z1bmN0aQogICB0aW1lX3QgdHYgPSAodGltZV90KSBmbG9vciht
aWxsaSAvIDEwMDAuMCk7CiAgIGRvdWJsZSBtcyA9IG1pbGxpIC0gdHYgKiAxMDAwLjA7CiAKKyAg
Ly8gRklYTUU6IG5vdCB0aHJlYWRzYWZlIChlaXRoZXIgb2YgdGhlc2Ugb3B0aW9ucykKICAgc3Ry
dWN0IHRtICp0ID0gdXRjID8gZ210aW1lKCZ0dikgOiBsb2NhbHRpbWUoJnR2KTsKICAgLy8gd2Ug
aGFkIGFuIG91dCBvZiByYW5nZSB5ZWFyLiB1c2UgdGhhdCBvbmUgKHBsdXMvbWludXMgb2Zmc2V0
CiAgIC8vIGZvdW5kIGJ5IGNhbGN1bGF0aW5nIHRtX3llYXIpIGFuZCBmaXggdGhlIHdlZWsgZGF5
IGNhbGN1bGF0aW9uCkBAIC02NDksOSArNjUxLDkgQEAgVmFsdWVJbXAgKkRhdGVQcm90b0Z1bmNJ
bXA6OmNhbGxBc0Z1bmN0aQogICAgICAgbSAtPSB0aW1lWm9uZU9mZnNldCh0KSAqIG1zUGVyTWlu
dXRlOwogICAgIHQtPnRtX3dkYXkgPSB3ZWVrRGF5KG0pOwogICB9Ci0gIAorIAogICBzd2l0Y2gg
KGlkKSB7Ci0jaWYgQVBQTEVfQ0hBTkdFUworI2lmIDAgJiYgKCFkZWZpbmVkKEFQUExFX0NIQU5H
RVMpIHx8ICFBUFBMRV9DSEFOR0VTKQogICBjYXNlIFRvU3RyaW5nOgogICAgIHJlc3VsdCA9IFN0
cmluZyhmb3JtYXREYXRlKCp0KSArICIgIiArIGZvcm1hdFRpbWUoKnQpKTsKICAgICBicmVhazsK
QEAgLTc0NSw5ICs3NDcsNyBAQCBWYWx1ZUltcCAqRGF0ZVByb3RvRnVuY0ltcDo6Y2FsbEFzRnVu
Y3RpCiAgICAgcmVzdWx0ID0gTnVtYmVyKG1zKTsKICAgICBicmVhazsKICAgY2FzZSBHZXRUaW1l
em9uZU9mZnNldDoKLSNpZiBkZWZpbmVkIEJTRCB8fCBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICBy
ZXN1bHQgPSBOdW1iZXIoLXQtPnRtX2dtdG9mZiAvIDYwKTsKLSNlbHNlCisjaWZkZWYgV0lOMzIK
ICMgIGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQogI2Vycm9yIHBsZWFzZSBhZGQgZGF5bGlnaHQg
c2F2aW5ncyBvZmZzZXQgaGVyZSEKICAgICAvLyBGSVhNRTogVXNpbmcgdGhlIGRheWxpZ2h0IHZh
bHVlIHdhcyB3cm9uZyBmb3IgQlNELCBtYXliZSB3cm9uZyBoZXJlIHRvby4KQEAgLTc1Niw2ICs3
NTYsOCBAQCBWYWx1ZUltcCAqRGF0ZVByb3RvRnVuY0ltcDo6Y2FsbEFzRnVuY3RpCiAgICAgLy8g
RklYTUU6IFVzaW5nIHRoZSBkYXlsaWdodCB2YWx1ZSB3YXMgd3JvbmcgZm9yIEJTRCwgbWF5YmUg
d3JvbmcgaGVyZSB0b28uCiAgICAgcmVzdWx0ID0gTnVtYmVyKCggdGltZXpvbmUgLyA2MCAtICgg
ZGF5bGlnaHQgPyA2MCA6IDAgKSkpOwogIyAgZW5kaWYKKyNlbHNlCisgICAgcmVzdWx0ID0gTnVt
YmVyKC10LT50bV9nbXRvZmYgLyA2MCk7CiAjZW5kaWYKICAgICBicmVhazsKICAgY2FzZSBTZXRU
aW1lOgpAQCAtODQ3LDYgKzg0OSw3IEBAIE9iamVjdEltcCAqRGF0ZU9iamVjdEltcDo6Y29uc3Ry
dWN0KEV4ZWMKICAgICBkb3VibGUgdXRjID0gZmxvb3IoKGRvdWJsZSl0aW1lYnVmZmVyLnRpbWUg
KiAxMDAwLjAgKyAoZG91YmxlKXRpbWVidWZmZXIubWlsbGl0bSk7CiAjZWxzZQogICAgIHN0cnVj
dCB0aW1ldmFsIHR2OworICAgIC8vIEZJWE1FOiBub3QgdGhyZWFkc2FmZQogICAgIGdldHRpbWVv
ZmRheSgmdHYsIDBMKTsKICAgICBkb3VibGUgdXRjID0gZmxvb3IoKGRvdWJsZSl0di50dl9zZWMg
KiAxMDAwLjAgKyAoZG91YmxlKXR2LnR2X3VzZWMgLyAxMDAwLjApOwogI2VuZGlmCkBAIC04OTUs
NyArODk4LDggQEAgYm9vbCBEYXRlT2JqZWN0SW1wOjppbXBsZW1lbnRzQ2FsbCgpIGNvbgogVmFs
dWVJbXAgKkRhdGVPYmplY3RJbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSAqLypleGVjKi8s
IE9iamVjdEltcCAqLyp0aGlzT2JqKi8sIGNvbnN0IExpc3QgJi8qYXJncyovKQogewogICB0aW1l
X3QgdCA9IHRpbWUoMEwpOwotI2lmIEFQUExFX0NIQU5HRVMKKyNpZmRlZiBBUFBMRV9DSEFOR0VT
CisgIC8vIEZJWE1FOiBub3QgdGhyZWFkc2FmZQogICBzdHJ1Y3QgdG0gKnRtID0gbG9jYWx0aW1l
KCZ0KTsKICAgcmV0dXJuIFN0cmluZyhmb3JtYXREYXRlKCp0bSkgKyAiICIgKyBmb3JtYXRUaW1l
KCp0bSkpOwogI2Vsc2UKQEAgLTk2MSw2ICs5NjUsOCBAQCBkb3VibGUgcGFyc2VEYXRlKGNvbnN0
IFVTdHJpbmcgJnUpCiAgIGZwcmludGYoc3RkZXJyLCJLSlM6OnBhcnNlRGF0ZSAlc1xuIix1LmFz
Y2lpKCkpOwogI2VuZGlmCiAgIGRvdWJsZSAvKnRpbWVfdCovIHNlY29uZHMgPSBLUkZDRGF0ZV9w
YXJzZURhdGUoIHUgKTsKKyAgZnByaW50ZihzdGRlcnIsICJQYXJzZURhdGU6IFslc10gPSAlbGZc
biIsIHUuYXNjaWkoKSwgc2Vjb25kcyk7CisgIGZmbHVzaChzdGRlcnIpOwogCiAgIHJldHVybiBz
ZWNvbmRzID09IGludmFsaWREYXRlID8gTmFOIDogc2Vjb25kcyAqIDEwMDAuMDsKIH0KQEAgLTEw
MTAsMTIgKzEwMTYsOCBAQCBkb3VibGUgbWFrZVRpbWUoc3RydWN0IHRtICp0LCBkb3VibGUgbXMs
CiAgICAgaW50IHV0Y09mZnNldDsKICAgICBpZiAodXRjKSB7CiAgICAgICAgIHRpbWVfdCB6ZXJv
ID0gMDsKLSNpZiBkZWZpbmVkIEJTRCB8fCBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChf
X0FQUExFX18pCi0gICAgICAgIHN0cnVjdCB0bSB0MzsKLSAgICAgICAgbG9jYWx0aW1lX3IoJnpl
cm8sICZ0Myk7Ci0gICAgICAgIHV0Y09mZnNldCA9IHQzLnRtX2dtdG9mZjsKLSAgICAgICAgdC0+
dG1faXNkc3QgPSB0My50bV9pc2RzdDsKLSNlbHNlCisjaWYgZGVmaW5lZChXSU4zMikKKyAgICAg
ICAgLy8gRklYTUU6IG5vdCB0aHJlYWRzYWZlCiAgICAgICAgICh2b2lkKWxvY2FsdGltZSgmemVy
byk7CiAjICBpZiBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQog
ICAgICAgICB1dGNPZmZzZXQgPSAtIF90aW1lem9uZTsKQEAgLTEwMjMsMTcgKzEwMjUsMjMgQEAg
ZG91YmxlIG1ha2VUaW1lKHN0cnVjdCB0bSAqdCwgZG91YmxlIG1zLAogICAgICAgICB1dGNPZmZz
ZXQgPSAtIHRpbWV6b25lOwogIyAgZW5kaWYKICAgICAgICAgdC0+dG1faXNkc3QgPSAwOworI2Vs
c2UKKyAgICAgICAgc3RydWN0IHRtIHQzOworICAgICAgICBsb2NhbHRpbWVfcigmemVybywgJnQz
KTsKKyAgICAgICAgdXRjT2Zmc2V0ID0gdDMudG1fZ210b2ZmOworICAgICAgICB0LT50bV9pc2Rz
dCA9IHQzLnRtX2lzZHN0OwogI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgdXRjT2Zmc2V0
ID0gMDsKICAgICAgICAgdC0+dG1faXNkc3QgPSAtMTsKICAgICB9Ci0gICAgCisKKyNpZmRlZiBf
X0FQUExFX18KICAgICAvLyB0LT50bV95ZWFyIG11c3QgaG9sZCB0aGUgYnVsayBvZiB0aGUgZGF0
YSB0byBhdm9pZCBvdmVyZmxvdyB3aGVuIGNvbnZlcnRpbmcKICAgICAvLyB0byBhIENGR3JlZ29y
aWFuRGF0ZS4gKENGR3JlZ29yaWFuRGF0ZS5tb250aCBpcyBhbiBTSW50ODsgQ0ZHcmVnb3JpYW5E
YXRlLnllYXIgaXMgYW4gU0ludDMyLikKICAgICB0LT50bV95ZWFyICs9IHQtPnRtX21vbiAvIDEy
OwogICAgIHQtPnRtX21vbiAlPSAxMjsKLSAgICAKKyNlbmRpZiAgICAKIAogICAgIGRvdWJsZSB5
ZWFyT2Zmc2V0ID0gMC4wOwogICAgIGlmICh0LT50bV95ZWFyIDwgKDE5NzAgLSAxOTAwKSB8fCB0
LT50bV95ZWFyID4gKDIwMzggLSAxOTAwKSkgewpAQCAtMTM3Miw2ICsxMzgwLDggQEAgZG91Ymxl
IEtSRkNEYXRlX3BhcnNlRGF0ZShjb25zdCBVU3RyaW5nIAogICAgICBpZiAoKHllYXIgPj0gNTAp
ICYmICh5ZWFyIDwgMTAwKSkKICAgICAgICAgIHllYXIgKz0gMTkwMDsgIC8vIFkySwogCitmcHJp
bnRmKHN0ZGVyciwgIm1vbnRoPSVkLCBkYXk9JWQsIHllYXI9JWQsIGhvdXI9JWQsIG1pbj0lZCwg
c2VjPSVkXG4iLCBtb250aCwgZGF5LCB5ZWFyLCBob3VyLCBtaW51dGUsIHNlY29uZCk7CitmZmx1
c2goc3RkZXJyKTsKICAgICAgLy8gZmFsbCBiYWNrIHRvIG1pZG5pZ2h0LCBsb2NhbCB0aW1lem9u
ZQogICAgICBpZiAoIWhhdmVfdHopIHsKICAgICAgICBzdHJ1Y3QgdG0gdDsKSW5kZXg6IGtqcy9p
ZGVudGlmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENv
cmUva2pzL2lkZW50aWZpZXIuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwCmRpZmYgLXUg
LTMgLXAgLXIxLjIwIGlkZW50aWZpZXIuY3BwCi0tLSBranMvaWRlbnRpZmllci5jcHAJMjcgU2Vw
IDIwMDUgMjI6MzY6NDkgLTAwMDAJMS4yMAorKysga2pzL2lkZW50aWZpZXIuY3BwCTEgT2N0IDIw
MDUgMTk6Mjc6MTcgLTAwMDAKQEAgLTI1LDcgKzI1LDcgQEAKIC8vIHBvcnRhYmxlLCBhbmQgaXQg
d291bGQgYmUgZ29vZCB0byBmaWd1cmUgb3V0IGEgMTAwJSBjbGVhbiB3YXkgdGhhdCBzdGlsbCBh
dm9pZHMgY29kZSB0aGF0CiAvLyBydW5zIGF0IGluaXQgdGltZS4KIAotI2lmICFXSU4zMiAvLyBj
YW4ndCBnZXQgdGhpcyB0byBjb21waWxlIG9uIFZpc3VhbCBDKysgeWV0CisjaWYgIWRlZmluZWQo
V0lOMzIpIC8vIGNhbid0IGdldCB0aGlzIHRvIGNvbXBpbGUgb24gVmlzdWFsIEMrKyB5ZXQKICNk
ZWZpbmUgQVZPSURfU1RBVElDX0NPTlNUUlVDVE9SUyAxCiAjZW5kaWYKIApJbmRleDoga2pzL2lu
dGVybmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUv
a2pzL2ludGVybmFsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43NApkaWZmIC11IC0zIC1w
IC1yMS43NCBpbnRlcm5hbC5jcHAKLS0tIGtqcy9pbnRlcm5hbC5jcHAJMjggU2VwIDIwMDUgMjI6
MDE6MTYgLTAwMDAJMS43NAorKysga2pzL2ludGVybmFsLmNwcAkxIE9jdCAyMDA1IDE5OjI3OjE3
IC0wMDAwCkBAIC00Niw3ICs0Niw3IEBACiAKICNpbmNsdWRlIDxreG1sY29yZS9IYXNoTWFwLmg+
CiAKLSNpZiBXSU4zMgorI2lmIGRlZmluZWQoV0lOMzIpCiAjaW5jbHVkZSA8ZmxvYXQuaD4KICNk
ZWZpbmUgY29weXNpZ24oYSwgYikgX2NvcHlzaWduKGEsIGIpCiAjZW5kaWYKQEAgLTczLDE1ICs3
Myw3IEBAIG5hbWVzcGFjZSBLSlMgewogIAogI2VuZGlmIC8vIEFQUExFX0NIQU5HRVMKIAotI2lm
ICFLSlNfTVVMVElQTEVfVEhSRUFEUwotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUlu
dGVycHJldGVyTG9jaygpIHsgfQotc3RhdGljIGlubGluZSB2b2lkIGxvY2tJbnRlcnByZXRlcigp
IHsgfQotc3RhdGljIGlubGluZSB2b2lkIHVubG9ja0ludGVycHJldGVyKCkgeyB9Ci0KLWNvbnN0
IGludCBpbnRlcnByZXRlckxvY2tDb3VudCA9IDE7Ci0KLSNlbHNlCisjaWYgZGVmaW5lZChLSlNf
TVVMVElQTEVfVEhSRUFEUykgJiYgS0pTX01VTFRJUExFX1RIUkVBRFMKIAogc3RhdGljIHB0aHJl
YWRfb25jZV90IGludGVycHJldGVyTG9ja09uY2UgPSBQVEhSRUFEX09OQ0VfSU5JVDsKIHN0YXRp
YyBwdGhyZWFkX211dGV4X3QgaW50ZXJwcmV0ZXJMb2NrOwpAQCAtMTExLDI2ICsxMDMsMzQgQEAg
c3RhdGljIGlubGluZSB2b2lkIHVubG9ja0ludGVycHJldGVyKCkKICAgcHRocmVhZF9tdXRleF91
bmxvY2soJmludGVycHJldGVyTG9jayk7CiB9CiAKKyNlbHNlCisKK3N0YXRpYyBpbmxpbmUgdm9p
ZCBpbml0aWFsaXplSW50ZXJwcmV0ZXJMb2NrKCkgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgbG9j
a0ludGVycHJldGVyKCkgeyB9CitzdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrSW50ZXJwcmV0ZXIo
KSB7IH0KKworY29uc3QgaW50IGludGVycHJldGVyTG9ja0NvdW50ID0gMTsKKwogI2VuZGlmCiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVbmRlZmluZWRJbXAgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVZhbHVlSW1wICpVbmRlZmluZWRJbXA6OnRvUHJp
bWl0aXZlKEV4ZWNTdGF0ZSAqLypleGVjKi8sIFR5cGUpIGNvbnN0CitWYWx1ZUltcCAqVW5kZWZp
bmVkSW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKiAvKmV4ZWMqLywgVHlwZSkgY29uc3QKIHsK
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8VW5kZWZpbmVkSW1wICo+KHRoaXMpOwogfQogCi1ib29sIFVu
ZGVmaW5lZEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0Citib29sIFVu
ZGVmaW5lZEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWRvdWJsZSBVbmRlZmluZWRJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0
ZSAqLypleGVjKi8pIGNvbnN0Citkb3VibGUgVW5kZWZpbmVkSW1wOjp0b051bWJlcihFeGVjU3Rh
dGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIE5hTjsKIH0KIAotVVN0cmluZyBVbmRl
ZmluZWRJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0CitVU3RyaW5nIFVu
ZGVmaW5lZEltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICogLypleGVjKi8pIGNvbnN0CiB7CiAgIHJl
dHVybiAidW5kZWZpbmVkIjsKIH0KQEAgLTE0MiwyMiArMTQyLDIyIEBAIE9iamVjdEltcCAqVW5k
ZWZpbmVkSW1wOjp0b09iamVjdChFeGVjU3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIE51bGxJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
VmFsdWVJbXAgKk51bGxJbXA6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqLypleGVjKi8sIFR5cGUp
IGNvbnN0CitWYWx1ZUltcCAqTnVsbEltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICogLypleGVj
Ki8sIFR5cGUpIGNvbnN0CiB7CiAgIHJldHVybiBjb25zdF9jYXN0PE51bGxJbXAgKj4odGhpcyk7
CiB9CiAKLWJvb2wgTnVsbEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0
Citib29sIE51bGxJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsK
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1kb3VibGUgTnVsbEltcDo6dG9OdW1iZXIoRXhlY1N0YXRl
ICovKmV4ZWMqLykgY29uc3QKK2RvdWJsZSBOdWxsSW1wOjp0b051bWJlcihFeGVjU3RhdGUgKiAv
KmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIDAuMDsKIH0KIAotVVN0cmluZyBOdWxsSW1wOjp0
b1N0cmluZyhFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAorVVN0cmluZyBOdWxsSW1wOjp0b1N0
cmluZyhFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuICJudWxsIjsKIH0K
QEAgLTE2OSwyMiArMTY5LDIyIEBAIE9iamVjdEltcCAqTnVsbEltcDo6dG9PYmplY3QoRXhlY1N0
YXRlICoKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJvb2xlYW5JbXAgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVmFsdWVJbXAgKkJvb2xlYW5JbXA6
OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqLypleGVjKi8sIFR5cGUpIGNvbnN0CitWYWx1ZUltcCAq
Qm9vbGVhbkltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICogLypleGVjKi8sIFR5cGUpIGNvbnN0
CiB7CiAgIHJldHVybiBjb25zdF9jYXN0PEJvb2xlYW5JbXAgKj4odGhpcyk7CiB9CiAKLWJvb2wg
Qm9vbGVhbkltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0Citib29sIEJv
b2xlYW5JbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0
dXJuIHZhbDsKIH0KIAotZG91YmxlIEJvb2xlYW5JbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqLypl
eGVjKi8pIGNvbnN0Citkb3VibGUgQm9vbGVhbkltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICogLypl
eGVjKi8pIGNvbnN0CiB7CiAgIHJldHVybiB2YWwgPyAxLjAgOiAwLjA7CiB9CiAKLVVTdHJpbmcg
Qm9vbGVhbkltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK1VTdHJpbmcg
Qm9vbGVhbkltcDo6dG9TdHJpbmcoRXhlY1N0YXRlICogLypleGVjKi8pIGNvbnN0CiB7CiAgIHJl
dHVybiB2YWwgPyAidHJ1ZSIgOiAiZmFsc2UiOwogfQpAQCAtMTk4LDIyICsxOTgsMjIgQEAgT2Jq
ZWN0SW1wICpCb29sZWFuSW1wOjp0b09iamVjdChFeGVjU3RhdAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gU3RyaW5nSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1WYWx1ZUltcCAqU3RyaW5nSW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKi8q
ZXhlYyovLCBUeXBlKSBjb25zdAorVmFsdWVJbXAgKlN0cmluZ0ltcDo6dG9QcmltaXRpdmUoRXhl
Y1N0YXRlICogLypleGVjKi8sIFR5cGUpIGNvbnN0CiB7CiAgIHJldHVybiBjb25zdF9jYXN0PFN0
cmluZ0ltcCAqPih0aGlzKTsKIH0KIAotYm9vbCBTdHJpbmdJbXA6OnRvQm9vbGVhbihFeGVjU3Rh
dGUgKi8qZXhlYyovKSBjb25zdAorYm9vbCBTdHJpbmdJbXA6OnRvQm9vbGVhbihFeGVjU3RhdGUg
KiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuICh2YWwuc2l6ZSgpID4gMCk7CiB9CiAKLWRv
dWJsZSBTdHJpbmdJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0Citkb3Vi
bGUgU3RyaW5nSW1wOjp0b051bWJlcihFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAg
cmV0dXJuIHZhbC50b0RvdWJsZSgpOwogfQogCi1VU3RyaW5nIFN0cmluZ0ltcDo6dG9TdHJpbmco
RXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK1VTdHJpbmcgU3RyaW5nSW1wOjp0b1N0cmluZyhF
eGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIHZhbDsKIH0KSW5kZXg6IGtq
cy9pbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29y
ZS9ranMvaW50ZXJuYWwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MQpkaWZmIC11IC0zIC1w
IC1yMS40MSBpbnRlcm5hbC5oCi0tLSBranMvaW50ZXJuYWwuaAkyNyBTZXAgMjAwNSAyMjozNjo0
OSAtMDAwMAkxLjQxCisrKyBranMvaW50ZXJuYWwuaAkxIE9jdCAyMDA1IDE5OjI3OjE3IC0wMDAw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAic2NvcGVfY2hhaW4uaCIKICNpbmNsdWRlIDxr
eG1sY29yZS9TaGFyZWRQdHIuaD4KIAotI2lmICFXSU4zMgorI2lmIGRlZmluZWQoX19BUFBMRV9f
KQogI2RlZmluZSBLSlNfTVVMVElQTEVfVEhSRUFEUyAxCiAjZW5kaWYKIApJbmRleDoga2pzL3By
b3RlY3RlZF92YWx1ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2Ny
aXB0Q29yZS9ranMvcHJvdGVjdGVkX3ZhbHVlcy5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NgpkaWZmIC11IC0zIC1wIC1yMS42IHByb3RlY3RlZF92YWx1ZXMuY3BwCi0tLSBranMvcHJvdGVj
dGVkX3ZhbHVlcy5jcHAJMTkgU2VwIDIwMDUgMDY6NTc6MjggLTAwMDAJMS42CisrKyBranMvcHJv
dGVjdGVkX3ZhbHVlcy5jcHAJMSBPY3QgMjAwNSAxOToyNzoxNyAtMDAwMApAQCAtMjAsNiArMjAs
OCBAQAogICoKICAqLwogCisjaW5jbHVkZSA8c3RkbGliLmg+CisKICNpbmNsdWRlICJwcm90ZWN0
ZWRfdmFsdWVzLmgiCiAKICNpbmNsdWRlICJwb2ludGVyX2hhc2guaCIKSW5kZXg6IGt4bWxjb3Jl
L1RDU3lzdGVtQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2Ny
aXB0Q29yZS9reG1sY29yZS9UQ1N5c3RlbUFsbG9jLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xCmRpZmYgLXUgLTMgLXAgLXIxLjEgVENTeXN0ZW1BbGxvYy5jcHAKLS0tIGt4bWxjb3JlL1RD
U3lzdGVtQWxsb2MuY3BwCTI3IFNlcCAyMDA1IDIyOjM2OjUzIC0wMDAwCTEuMQorKysga3htbGNv
cmUvVENTeXN0ZW1BbGxvYy5jcHAJMSBPY3QgMjAwNSAxOToyNzoxOCAtMDAwMApAQCAtMjA3LDcg
KzIwNyw3IEBAIHN0YXRpYyB2b2lkKiBUcnlEZXZNZW0oc2l6ZV90IHNpemUsIHNpemUKICAgfQog
ICAKICAgLy8gY2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYW55IG1lbW9yeSBsZWZ0Ci0gIGlmIChw
aHlzbWVtX2xpbWl0ICE9IDAgJiYgcGh5c21lbV9iYXNlICsgc2l6ZSArIGV4dHJhID4gcGh5c21l
bV9saW1pdCkgeworICBpZiAocGh5c21lbV9saW1pdCAhPSAwICYmIHBoeXNtZW1fYmFzZSArIHNp
emUgKyBleHRyYSA+IChzaXplX3QpcGh5c21lbV9saW1pdCkgewogICAgIGRldm1lbV9mYWlsdXJl
ID0gdHJ1ZTsKICAgICByZXR1cm4gTlVMTDsKICAgfQo=
</data>
<flag name="review"
          id="650"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4185</attachid>
            <date>2005-10-03 12:48:12 -0700</date>
            <delta_ts>2005-10-03 18:34:13 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>jscore-5.patch</filename>
            <type>text/plain</type>
            <size>18764</size>
            <attacher name="George Staikos">staikos</attacher>
            
              <data encoding="base64">SW5kZXg6IGNvbGxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ3CmRp
ZmYgLXUgLTMgLXAgLXIxLjQ3IGNvbGxlY3Rvci5jcHAKLS0tIGNvbGxlY3Rvci5jcHAJMjggU2Vw
IDIwMDUgMDI6MjU6NDkgLTAwMDAJMS40NworKysgY29sbGVjdG9yLmNwcAkzIE9jdCAyMDA1IDE5
OjQ5OjI3IC0wMDAwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8c2V0am1wLmg+CiAjaW5j
bHVkZSA8YWxnb3JpdGhtPgogCi0jaWYgIVdJTjMyCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAK
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHB0
aHJlYWQuaD4KQEAgLTM3LDEwICszNywxMiBAQAogI2luY2x1ZGUgPG1hY2gvdGFzay5oPgogI2lu
Y2x1ZGUgPG1hY2gvdGhyZWFkX2FjdC5oPgogCi0jZWxzZQorI2VsaWYgZGVmaW5lZChXSU4zMikK
IAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorI2Vsc2UKKwogI2VuZGlmCiAKIHVzaW5nIHN0ZDo6
bWF4OwpAQCAtMTgwLDcgKzE4Miw3IEBAIGFsbG9jYXRlTmV3QmxvY2s6CiAgIHJldHVybiBuZXdD
ZWxsOwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBkZWZpbmVkKEtKU19NVUxU
SVBMRV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiBzdHJ1Y3QgQ29sbGVjdG9y
OjpUaHJlYWQgewogICBUaHJlYWQocHRocmVhZF90IHB0aHJlYWQsIG1hY2hfcG9ydF90IG10aHJl
YWQpIDogcG9zaXhUaHJlYWQocHRocmVhZCksIG1hY2hUaHJlYWQobXRocmVhZCkge30KQEAgLTI4
OCwxNiArMjkwLDI1IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRocmVhZENvbnNlcnYK
ICAgICBqbXBfYnVmIHJlZ2lzdGVyczsKICAgICBzZXRqbXAocmVnaXN0ZXJzKTsKIAotI2lmICFX
SU4zMgorI2lmIGRlZmluZWQoX19BUFBMRV9fKQogICAgIHB0aHJlYWRfdCB0aHJlYWQgPSBwdGhy
ZWFkX3NlbGYoKTsKICAgICB2b2lkICpzdGFja0Jhc2UgPSBwdGhyZWFkX2dldF9zdGFja2FkZHJf
bnAodGhyZWFkKTsKLSNlbHNlCisjZWxpZiBkZWZpbmVkKFdJTjMyKQogICAgIE5UX1RJQiAqcFRp
YjsKICAgICBfX2FzbSB7CiAgICAgICAgIE1PViBFQVgsIEZTOlsxOGhdCiAgICAgICAgIE1PViBw
VGliLCBFQVgKICAgICB9CiAgICAgdm9pZCAqc3RhY2tCYXNlID0gKHZvaWQgKilwVGliLT5TdGFj
a0Jhc2U7CisjZWxzZQorICAgIHZvaWQgKnN0YWNrQmFzZSA9IDA7CisgICAgcHRocmVhZF9hdHRy
X3Qgc2F0dHI7CisgICAgaW50IHJjOworICAgIHJjID0gcHRocmVhZF9nZXRhdHRyX25wKHB0aHJl
YWRfc2VsZigpLCAmc2F0dHIpOworICAgIC8vIEZhaWxzIG9uIExpbnV4ICg/KQorICAgIC8vcmMg
PSBwdGhyZWFkX2F0dHJfZ2V0c3RhY2soJnNhdHRyLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsK
KyAgICByYyA9IHB0aHJlYWRfYXR0cl9nZXRzdGFja2FkZHIoJnNhdHRyLCAmc3RhY2tCYXNlKTsK
KyAgICBhc3NlcnQoc3RhY2tCYXNlKTsKICNlbmRpZgogCiAgICAgaW50IGR1bW15OwpAQCAtMzA2
LDcgKzMxNyw3IEBAIHZvaWQgQ29sbGVjdG9yOjptYXJrQ3VycmVudFRocmVhZENvbnNlcnYKICAg
ICBtYXJrU3RhY2tPYmplY3RzQ29uc2VydmF0aXZlbHkoc3RhY2tQb2ludGVyLCBzdGFja0Jhc2Up
OwogfQogCi0jaWYgS0pTX01VTFRJUExFX1RIUkVBRFMKKyNpZiBkZWZpbmVkKEtKU19NVUxUSVBM
RV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgdXN3b3JkX3Q7IC8vIHdvcmQgc2l6ZSwgYXNzdW1lZCB0byBiZSBlaXRoZXIgMzIgb3IgNjQg
Yml0CiAKQEAgLTM1Myw3ICszNjQsNyBAQCB2b2lkIENvbGxlY3Rvcjo6bWFya1N0YWNrT2JqZWN0
c0NvbnNlcnZhCiB7CiAgIG1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkoKTsKIAotI2lm
IEtKU19NVUxUSVBMRV9USFJFQURTCisjaWYgZGVmaW5lZChLSlNfTVVMVElQTEVfVEhSRUFEUykg
JiYgS0pTX01VTFRJUExFX1RIUkVBRFMKICAgZm9yIChUaHJlYWQgKnRocmVhZCA9IHJlZ2lzdGVy
ZWRUaHJlYWRzOyB0aHJlYWQgIT0gTlVMTDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0KSB7CiAgICAg
aWYgKHRocmVhZC0+cG9zaXhUaHJlYWQgIT0gcHRocmVhZF9zZWxmKCkpIHsKICAgICAgIG1hcmtP
dGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KHRocmVhZCk7CkluZGV4OiBjb25maWcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2NvbmZpZy5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjkKZGlmZiAtdSAtMyAtcCAtcjEuOSBjb25maWcuaAotLS0gY29u
ZmlnLmgJMjcgU2VwIDIwMDUgMjI6MzY6NDggLTAwMDAJMS45CisrKyBjb25maWcuaAkzIE9jdCAy
MDA1IDE5OjQ5OjI3IC0wMDAwCkBAIC0xLDQgKzEsNCBAQAotI2lmICFXSU4zMgorI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQogCiAjZGVmaW5lIEhBVkVfRlVOQ19JU0lORiAxCiAjZGVmaW5lIEhBVkVf
RlVOQ19JU05BTiAxCkBAIC03LDEyICs3LDIyIEBACiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAx
CiAjZGVmaW5lIFRJTUVfV0lUSF9TWVNfVElNRSAxCiAKLSNlbHNlCisjZWxpZiBkZWZpbmVkKFdJ
TjMyKQogCiAjZGVmaW5lIEhBVkVfRkxPQVRfSCAxCiAjZGVmaW5lIEhBVkVfRlVOQ19fRklOSVRF
IDEKICNkZWZpbmUgSEFWRV9TWVNfVElNRUJfSCAxCiAKKyNlbHNlCisKKyNkZWZpbmUgSEFWRV9G
VU5DX0lTSU5GIDEKKyNkZWZpbmUgSEFWRV9GVU5DX0lTTkFOIDEKKyNkZWZpbmUgSEFWRV9TVFJJ
TkdTX0ggMQorI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKKyNkZWZpbmUgSEFWRV9TWVNfVElN
RV9IIDEKKyNkZWZpbmUgVElNRV9XSVRIX1NZU19USU1FIDEKKyNkZWZpbmUgSEFWRV9FUlJOT19I
IDEKKwogI2VuZGlmCiAKICNkZWZpbmUgSEFWRV9GVU5DX1NUUlRPTEwgMQpJbmRleDogZGF0ZV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9KYXZhU2NyaXB0Q29yZS9r
anMvZGF0ZV9vYmplY3QuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU4CmRpZmYgLXUgLTMg
LXAgLXIxLjU4IGRhdGVfb2JqZWN0LmNwcAotLS0gZGF0ZV9vYmplY3QuY3BwCTMwIFNlcCAyMDA1
IDE2OjE2OjEzIC0wMDAwCTEuNTgKKysrIGRhdGVfb2JqZWN0LmNwcAkzIE9jdCAyMDA1IDE5OjQ5
OjI4IC0wMDAwCkBAIC0yMCw5ICsyMCw3IEBACiAgKgogICovCiAKLSNpZmRlZiBIQVZFX0NPTkZJ
R19ICi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKKyNpbmNsdWRlICJjb25maWcuaCIKICNp
Zm5kZWYgSEFWRV9TWVNfVElNRUJfSAogI2RlZmluZSBIQVZFX1NZU19USU1FQl9IIDAKICNlbmRp
ZgpAQCAtNDEsNiArMzksMTAgQEAKICNpbmNsdWRlIDxzeXMvdGltZWIuaD4KICNlbmRpZgogCisj
aWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCiAjaWZkZWYg
SEFWRV9TWVNfUEFSQU1fSAogIyAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjZW5kaWYgLy8gSEFW
RV9TWVNfUEFSQU1fSApAQCAtNzUsOCArNzcsMTAgQEAgY29uc3QgZG91YmxlIG1zUGVyU2Vjb25k
ID0gMTAwMDsKIGNvbnN0IGRvdWJsZSBtc1Blck1pbnV0ZSA9IG1zUGVyU2Vjb25kICogc2Vjb25k
c1Blck1pbnV0ZTsKIGNvbnN0IGRvdWJsZSBtc1BlckhvdXIgPSBtc1Blck1pbnV0ZSAqIG1pbnV0
ZXNQZXJIb3VyOwogY29uc3QgZG91YmxlIG1zUGVyRGF5ID0gbXNQZXJIb3VyICogaG91cnNQZXJE
YXk7Ci0KLSNpZiBBUFBMRV9DSEFOR0VTCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHdlZWtk
YXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAi
U3VuIiB9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtb250aE5hbWVbMTJdID0geyAiSmFu
IiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVsIiwgIkF1ZyIsICJTZXAi
LCAiT2N0IiwgIk5vdiIsICJEZWMiIH07CisgICAgCisjaWZkZWYgQVBQTEVfQ0hBTkdFUwogCiAv
LyBPcmlnaW5hbGx5LCB3ZSB3cm90ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBD
b3JlIEZvdW5kYXRpb24gYmVjYXVzZSBvZiBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gTWFjIE9T
IFggMTAuMi4KIC8vIEJ1dCB3ZSBuZWVkIHRvIGtlZXAgdXNpbmcgdGhpcyByYXRoZXIgdGhhbiB0
aGUgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMgYmVjYXVzZSB0aGlzIGhhbmRsZXMgYSBsYXJn
ZXIgcmFuZ2Ugb2YgZGF0ZXMuCkBAIC05Niw5ICsxMDAsNiBAQCB1c2luZyBLSlM6OlVTdHJpbmc7
CiAjZGVmaW5lIGN0aW1lKHgpIE5vdEFsbG93ZWRUb0NhbGxUaGlzKCkKICNkZWZpbmUgc3RyZnRp
bWUoYSwgYiwgYywgZCkgTm90QWxsb3dlZFRvQ2FsbFRoaXMoKQogCi1zdGF0aWMgY29uc3QgY2hh
ciAqIGNvbnN0IHdlZWtkYXlOYW1lWzddID0geyAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1Iiwg
IkZyaSIsICJTYXQiLCAiU3VuIiB9Owotc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtb250aE5h
bWVbMTJdID0geyAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLCAiSnVs
IiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiIH07Ci0gICAgCiBzdGF0aWMgc3Ry
dWN0IHRtICp0bVVzaW5nQ0YodGltZV90IGNsb2NrLCBDRlRpbWVab25lUmVmIHRpbWVab25lKQog
ewogICAgIHN0YXRpYyBzdHJ1Y3QgdG0gcmVzdWx0OwpAQCAtMjI0LDQxICsyMjUsNiBAQCBzdGF0
aWMgdGltZV90IHRpbWVVc2luZ0NGKHRpbWVfdCAqY2xvY2spCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotc3RhdGljIFVTdHJpbmcgZm9ybWF0RGF0ZShzdHJ1Y3QgdG0gJnRtKQotewotICAgIGNo
YXIgYnVmZmVyWzEwMF07Ci0gICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVz
ICVzICUwMmQgJTA0ZCIsCi0gICAgICAgIHdlZWtkYXlOYW1lWyh0bS50bV93ZGF5ICsgNikgJSA3
XSwKLSAgICAgICAgbW9udGhOYW1lW3RtLnRtX21vbl0sIHRtLnRtX21kYXksIHRtLnRtX3llYXIg
KyAxOTAwKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1zdGF0aWMgVVN0cmluZyBmb3JtYXRE
YXRlVVRDVmFyaWFudChzdHJ1Y3QgdG0gJnRtKQotewotICAgIGNoYXIgYnVmZmVyWzEwMF07Ci0g
ICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiVzLCAlMDJkICVzICUwNGQiLAot
ICAgICAgICB3ZWVrZGF5TmFtZVsodG0udG1fd2RheSArIDYpICUgN10sCi0gICAgICAgIHRtLnRt
X21kYXksIG1vbnRoTmFtZVt0bS50bV9tb25dLCB0bS50bV95ZWFyICsgMTkwMCk7Ci0gICAgcmV0
dXJuIGJ1ZmZlcjsKLX0KLQotc3RhdGljIFVTdHJpbmcgZm9ybWF0VGltZShzdHJ1Y3QgdG0gJnRt
KQotewotICAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICAgaWYgKHRtLnRtX2dtdG9mZiA9PSAwKSB7
Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIlMDJkOiUwMmQ6JTAy
ZCBHTVQiLCB0bS50bV9ob3VyLCB0bS50bV9taW4sIHRtLnRtX3NlYyk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaW50IG9mZnNldCA9IHRtLnRtX2dtdG9mZjsKLSAgICAgICAgaWYgKG9mZnNldCA8
IDApIHsKLSAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7Ci0gICAgICAgIH0KLSAgICAgICAg
c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiUwMmQ6JTAyZDolMDJkIEdNVCVjJTAy
ZCUwMmQiLAotICAgICAgICAgICAgdG0udG1faG91ciwgdG0udG1fbWluLCB0bS50bV9zZWMsCi0g
ICAgICAgICAgICB0bS50bV9nbXRvZmYgPCAwID8gJy0nIDogJysnLCBvZmZzZXQgLyAoNjAqNjAp
LCAob2Zmc2V0IC8gNjApICUgNjApOwotICAgIH0KLSAgICByZXR1cm4gVVN0cmluZyhidWZmZXIp
OwotfQotCiBzdGF0aWMgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgc3R5bGVGcm9tQXJnU3RyaW5nKGNv
bnN0IFVTdHJpbmcmIHN0cmluZyxDRkRhdGVGb3JtYXR0ZXJTdHlsZSBkZWZhdWx0U3R5bGUpCiB7
CiAgICAgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgcmV0VmFsID0gZGVmYXVsdFN0eWxlOwpAQCAtMzI2
LDYgKzI5Miw0MSBAQCBzdGF0aWMgVVN0cmluZyBmb3JtYXRMb2NhbGVEYXRlKEtKUzo6RXhlCiAK
IG5hbWVzcGFjZSBLSlMgewogCitzdGF0aWMgVVN0cmluZyBmb3JtYXREYXRlKHN0cnVjdCB0bSAm
dG0pCit7CisgICAgY2hhciBidWZmZXJbMTAwXTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVv
ZihidWZmZXIpLCAiJXMgJXMgJTAyZCAlMDRkIiwKKyAgICAgICAgd2Vla2RheU5hbWVbKHRtLnRt
X3dkYXkgKyA2KSAlIDddLAorICAgICAgICBtb250aE5hbWVbdG0udG1fbW9uXSwgdG0udG1fbWRh
eSwgdG0udG1feWVhciArIDE5MDApOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3N0YXRpYyBV
U3RyaW5nIGZvcm1hdERhdGVVVENWYXJpYW50KHN0cnVjdCB0bSAmdG0pCit7CisgICAgY2hhciBi
dWZmZXJbMTAwXTsKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMsICUw
MmQgJXMgJTA0ZCIsCisgICAgICAgIHdlZWtkYXlOYW1lWyh0bS50bV93ZGF5ICsgNikgJSA3XSwK
KyAgICAgICAgdG0udG1fbWRheSwgbW9udGhOYW1lW3RtLnRtX21vbl0sIHRtLnRtX3llYXIgKyAx
OTAwKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitzdGF0aWMgVVN0cmluZyBmb3JtYXRUaW1l
KHN0cnVjdCB0bSAmdG0pCit7CisgICAgY2hhciBidWZmZXJbMTAwXTsKKyAgICBpZiAodG0udG1f
Z210b2ZmID09IDApIHsKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwg
IiUwMmQ6JTAyZDolMDJkIEdNVCIsIHRtLnRtX2hvdXIsIHRtLnRtX21pbiwgdG0udG1fc2VjKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBpbnQgb2Zmc2V0ID0gdG0udG1fZ210b2ZmOworICAgICAg
ICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICAgICAgb2Zmc2V0ID0gLW9mZnNldDsKKyAgICAg
ICAgfQorICAgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJTAyZDolMDJk
OiUwMmQgR01UJWMlMDJkJTAyZCIsCisgICAgICAgICAgICB0bS50bV9ob3VyLCB0bS50bV9taW4s
IHRtLnRtX3NlYywKKyAgICAgICAgICAgIHRtLnRtX2dtdG9mZiA8IDAgPyAnLScgOiAnKycsIG9m
ZnNldCAvICg2MCo2MCksIChvZmZzZXQgLyA2MCkgJSA2MCk7CisgICAgfQorICAgIHJldHVybiBV
U3RyaW5nKGJ1ZmZlcik7Cit9CisKIHN0YXRpYyBpbnQgZGF5KGRvdWJsZSB0KQogewogICByZXR1
cm4gaW50KGZsb29yKHQgLyBtc1BlckRheSkpOwpAQCAtMzg4LDcgKzM4OSw3IEBAIHN0YXRpYyBp
bnQgd2Vla0RheShkb3VibGUgdCkKIAogc3RhdGljIGxvbmcgdGltZVpvbmVPZmZzZXQoY29uc3Qg
c3RydWN0IHRtICp0KQogewotI2lmIGRlZmluZWQgQlNEIHx8IGRlZmluZWQoX19saW51eF9fKSB8
fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZiAhZGVmaW5lZChXSU4zMikKICAgcmV0dXJuIC0odC0+
dG1fZ210b2ZmIC8gNjApOwogI2Vsc2UKICMgIGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBk
ZWZpbmVkKF9fQ1lHV0lOX18pCkBAIC01ODIsNyArNTgzLDcgQEAgVmFsdWVJbXAgKkRhdGVQcm90
b0Z1bmNJbXA6OmNhbGxBc0Z1bmN0aQogCiAgIFZhbHVlSW1wICpyZXN1bHQgPSBOVUxMOwogICBV
U3RyaW5nIHM7Ci0jaWYgIUFQUExFX0NIQU5HRVMKKyNpZiAhZGVmaW5lZChBUFBMRV9DSEFOR0VT
KSB8fCAhQVBQTEVfQ0hBTkdFUwogICBjb25zdCBpbnQgYnVmc2l6ZT0xMDA7CiAgIGNoYXIgdGlt
ZWJ1ZmZlcltidWZzaXplXTsKICAgQ1N0cmluZyBvbGRsb2NhbGUgPSBzZXRsb2NhbGUoTENfVElN
RSxOVUxMKTsKQEAgLTU5MSw3ICs1OTIsNiBAQCBWYWx1ZUltcCAqRGF0ZVByb3RvRnVuY0ltcDo6
Y2FsbEFzRnVuY3RpCiAjZW5kaWYKICAgVmFsdWVJbXAgKnYgPSB0aGlzT2JqLT5pbnRlcm5hbFZh
bHVlKCk7CiAgIGRvdWJsZSBtaWxsaSA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAKICAgaWYgKGlz
TmFOKG1pbGxpKSkgewogICAgIHN3aXRjaCAoaWQpIHsKICAgICAgIGNhc2UgVG9TdHJpbmc6CkBA
IC02MzcsNiArNjM3LDcgQEAgVmFsdWVJbXAgKkRhdGVQcm90b0Z1bmNJbXA6OmNhbGxBc0Z1bmN0
aQogICB0aW1lX3QgdHYgPSAodGltZV90KSBmbG9vcihtaWxsaSAvIDEwMDAuMCk7CiAgIGRvdWJs
ZSBtcyA9IG1pbGxpIC0gdHYgKiAxMDAwLjA7CiAKKyAgLy8gRklYTUU6IG5vdCB0aHJlYWRzYWZl
IChlaXRoZXIgb2YgdGhlc2Ugb3B0aW9ucykKICAgc3RydWN0IHRtICp0ID0gdXRjID8gZ210aW1l
KCZ0dikgOiBsb2NhbHRpbWUoJnR2KTsKICAgLy8gd2UgaGFkIGFuIG91dCBvZiByYW5nZSB5ZWFy
LiB1c2UgdGhhdCBvbmUgKHBsdXMvbWludXMgb2Zmc2V0CiAgIC8vIGZvdW5kIGJ5IGNhbGN1bGF0
aW5nIHRtX3llYXIpIGFuZCBmaXggdGhlIHdlZWsgZGF5IGNhbGN1bGF0aW9uCkBAIC02NDksOSAr
NjUwLDggQEAgVmFsdWVJbXAgKkRhdGVQcm90b0Z1bmNJbXA6OmNhbGxBc0Z1bmN0aQogICAgICAg
bSAtPSB0aW1lWm9uZU9mZnNldCh0KSAqIG1zUGVyTWludXRlOwogICAgIHQtPnRtX3dkYXkgPSB3
ZWVrRGF5KG0pOwogICB9Ci0gIAorIAogICBzd2l0Y2ggKGlkKSB7Ci0jaWYgQVBQTEVfQ0hBTkdF
UwogICBjYXNlIFRvU3RyaW5nOgogICAgIHJlc3VsdCA9IFN0cmluZyhmb3JtYXREYXRlKCp0KSAr
ICIgIiArIGZvcm1hdFRpbWUoKnQpKTsKICAgICBicmVhazsKQEAgLTY2NSw2ICs2NjUsNyBAQCBW
YWx1ZUltcCAqRGF0ZVByb3RvRnVuY0ltcDo6Y2FsbEFzRnVuY3RpCiAgIGNhc2UgVG9VVENTdHJp
bmc6CiAgICAgcmVzdWx0ID0gU3RyaW5nKGZvcm1hdERhdGVVVENWYXJpYW50KCp0KSArICIgIiAr
IGZvcm1hdFRpbWUoKnQpKTsKICAgICBicmVhazsKKyNpZiBkZWZpbmVkKEFQUExFX0NIQU5HRVMp
ICYmIEFQUExFX0NIQU5HRVMKICAgY2FzZSBUb0xvY2FsZVN0cmluZzoKICAgICByZXN1bHQgPSBT
dHJpbmcoZm9ybWF0TG9jYWxlRGF0ZShleGVjLCBzZWNzLCB0cnVlLCB0cnVlLCBhcmdzKSk7CiAg
ICAgYnJlYWs7CkBAIC02NzUsMjUgKzY3Niw2IEBAIFZhbHVlSW1wICpEYXRlUHJvdG9GdW5jSW1w
OjpjYWxsQXNGdW5jdGkKICAgICByZXN1bHQgPSBTdHJpbmcoZm9ybWF0TG9jYWxlRGF0ZShleGVj
LCBzZWNzLCBmYWxzZSwgdHJ1ZSwgYXJncykpOwogICAgIGJyZWFrOwogI2Vsc2UKLSAgY2FzZSBU
b1N0cmluZzoKLSAgICBzID0gY3RpbWUoJnR2KTsKLSAgICByZXN1bHQgPSBTdHJpbmcocy5zdWJz
dHIoMCwgcy5zaXplKCkgLSAxKSk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgVG9EYXRlU3RyaW5nOgot
ICBjYXNlIFRvVGltZVN0cmluZzoKLSAgY2FzZSBUb0dNVFN0cmluZzoKLSAgY2FzZSBUb1VUQ1N0
cmluZzoKLSAgICBzZXRsb2NhbGUoTENfVElNRSwiQyIpOwotICAgIGlmIChpZCA9PSBEYXRlUHJv
dG9GdW5jSW1wOjpUb0RhdGVTdHJpbmcpIHsKLSAgICAgIHN0cmZ0aW1lKHRpbWVidWZmZXIsIGJ1
ZnNpemUsICIleCIsdCk7Ci0gICAgfSBlbHNlIGlmIChpZCA9PSBEYXRlUHJvdG9GdW5jSW1wOjpU
b1RpbWVTdHJpbmcpIHsKLSAgICAgIHN0cmZ0aW1lKHRpbWVidWZmZXIsIGJ1ZnNpemUsICIlWCIs
dCk7Ci0gICAgfSBlbHNlIHsgLy8gdG9HTVRTdHJpbmcgJiB0b1VUQ1N0cmluZwotICAgICAgc3Ry
ZnRpbWUodGltZWJ1ZmZlciwgYnVmc2l6ZSwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyAlWiIsIHQp
OwotICAgIH0KLSAgICBzZXRsb2NhbGUoTENfVElNRSxvbGRsb2NhbGUuY19zdHIoKSk7Ci0gICAg
cmVzdWx0ID0gU3RyaW5nKHRpbWVidWZmZXIpOwotICAgIGJyZWFrOwogICBjYXNlIFRvTG9jYWxl
U3RyaW5nOgogICAgIHN0cmZ0aW1lKHRpbWVidWZmZXIsIGJ1ZnNpemUsICIlYyIsIHQpOwogICAg
IHJlc3VsdCA9IFN0cmluZyh0aW1lYnVmZmVyKTsKQEAgLTc0NSw5ICs3MjcsNyBAQCBWYWx1ZUlt
cCAqRGF0ZVByb3RvRnVuY0ltcDo6Y2FsbEFzRnVuY3RpCiAgICAgcmVzdWx0ID0gTnVtYmVyKG1z
KTsKICAgICBicmVhazsKICAgY2FzZSBHZXRUaW1lem9uZU9mZnNldDoKLSNpZiBkZWZpbmVkIEJT
RCB8fCBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXN1bHQgPSBOdW1iZXIoLXQtPnRtX2dtdG9m
ZiAvIDYwKTsKLSNlbHNlCisjaWZkZWYgV0lOMzIKICMgIGlmIGRlZmluZWQoX19CT1JMQU5EQ19f
KQogI2Vycm9yIHBsZWFzZSBhZGQgZGF5bGlnaHQgc2F2aW5ncyBvZmZzZXQgaGVyZSEKICAgICAv
LyBGSVhNRTogVXNpbmcgdGhlIGRheWxpZ2h0IHZhbHVlIHdhcyB3cm9uZyBmb3IgQlNELCBtYXli
ZSB3cm9uZyBoZXJlIHRvby4KQEAgLTc1Niw2ICs3MzYsOCBAQCBWYWx1ZUltcCAqRGF0ZVByb3Rv
RnVuY0ltcDo6Y2FsbEFzRnVuY3RpCiAgICAgLy8gRklYTUU6IFVzaW5nIHRoZSBkYXlsaWdodCB2
YWx1ZSB3YXMgd3JvbmcgZm9yIEJTRCwgbWF5YmUgd3JvbmcgaGVyZSB0b28uCiAgICAgcmVzdWx0
ID0gTnVtYmVyKCggdGltZXpvbmUgLyA2MCAtICggZGF5bGlnaHQgPyA2MCA6IDAgKSkpOwogIyAg
ZW5kaWYKKyNlbHNlCisgICAgcmVzdWx0ID0gTnVtYmVyKC10LT50bV9nbXRvZmYgLyA2MCk7CiAj
ZW5kaWYKICAgICBicmVhazsKICAgY2FzZSBTZXRUaW1lOgpAQCAtODQ3LDYgKzgyOSw3IEBAIE9i
amVjdEltcCAqRGF0ZU9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWMKICAgICBkb3VibGUgdXRjID0g
Zmxvb3IoKGRvdWJsZSl0aW1lYnVmZmVyLnRpbWUgKiAxMDAwLjAgKyAoZG91YmxlKXRpbWVidWZm
ZXIubWlsbGl0bSk7CiAjZWxzZQogICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIC8vIEZJWE1F
OiBub3QgdGhyZWFkc2FmZQogICAgIGdldHRpbWVvZmRheSgmdHYsIDBMKTsKICAgICBkb3VibGUg
dXRjID0gZmxvb3IoKGRvdWJsZSl0di50dl9zZWMgKiAxMDAwLjAgKyAoZG91YmxlKXR2LnR2X3Vz
ZWMgLyAxMDAwLjApOwogI2VuZGlmCkBAIC04OTIsMTggKzg3NSwxMiBAQCBib29sIERhdGVPYmpl
Y3RJbXA6OmltcGxlbWVudHNDYWxsKCkgY29uCiB9CiAKIC8vIEVDTUEgMTUuOS4yCi1WYWx1ZUlt
cCAqRGF0ZU9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlICovKmV4ZWMqLywgT2Jq
ZWN0SW1wICovKnRoaXNPYmoqLywgY29uc3QgTGlzdCAmLyphcmdzKi8pCitWYWx1ZUltcCAqRGF0
ZU9iamVjdEltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlY1N0YXRlICogLypleGVjKi8sIE9iamVjdElt
cCAqIC8qdGhpc09iaiovLCBjb25zdCBMaXN0ICYvKmFyZ3MqLykKIHsKICAgdGltZV90IHQgPSB0
aW1lKDBMKTsKLSNpZiBBUFBMRV9DSEFOR0VTCisgIC8vIEZJWE1FOiBub3QgdGhyZWFkc2FmZQog
ICBzdHJ1Y3QgdG0gKnRtID0gbG9jYWx0aW1lKCZ0KTsKICAgcmV0dXJuIFN0cmluZyhmb3JtYXRE
YXRlKCp0bSkgKyAiICIgKyBmb3JtYXRUaW1lKCp0bSkpOwotI2Vsc2UKLSAgVVN0cmluZyBzKGN0
aW1lKCZ0KSk7Ci0KLSAgLy8gcmV0dXJuIGZvcm1hdHRlZCBzdHJpbmcgbWludXMgdHJhaWxpbmcg
XG4KLSAgcmV0dXJuIFN0cmluZyhzLnN1YnN0cigwLCBzLnNpemUoKSAtIDEpKTsKLSNlbmRpZgog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGF0ZU9iamVjdEZ1bmNJbXAg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTAxMCwxMiArOTg3LDggQEAgZG91Ymxl
IG1ha2VUaW1lKHN0cnVjdCB0bSAqdCwgZG91YmxlIG1zLAogICAgIGludCB1dGNPZmZzZXQ7CiAg
ICAgaWYgKHV0YykgewogICAgICAgICB0aW1lX3QgemVybyA9IDA7Ci0jaWYgZGVmaW5lZCBCU0Qg
fHwgZGVmaW5lZChfX2xpbnV4X18pIHx8IGRlZmluZWQoX19BUFBMRV9fKQotICAgICAgICBzdHJ1
Y3QgdG0gdDM7Ci0gICAgICAgIGxvY2FsdGltZV9yKCZ6ZXJvLCAmdDMpOwotICAgICAgICB1dGNP
ZmZzZXQgPSB0My50bV9nbXRvZmY7Ci0gICAgICAgIHQtPnRtX2lzZHN0ID0gdDMudG1faXNkc3Q7
Ci0jZWxzZQorI2lmIGRlZmluZWQoV0lOMzIpCisgICAgICAgIC8vIEZJWE1FOiBub3QgdGhyZWFk
c2FmZQogICAgICAgICAodm9pZClsb2NhbHRpbWUoJnplcm8pOwogIyAgaWYgZGVmaW5lZChfX0JP
UkxBTkRDX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKICAgICAgICAgdXRjT2Zmc2V0ID0gLSBf
dGltZXpvbmU7CkBAIC0xMDIzLDE3ICs5OTYsMjMgQEAgZG91YmxlIG1ha2VUaW1lKHN0cnVjdCB0
bSAqdCwgZG91YmxlIG1zLAogICAgICAgICB1dGNPZmZzZXQgPSAtIHRpbWV6b25lOwogIyAgZW5k
aWYKICAgICAgICAgdC0+dG1faXNkc3QgPSAwOworI2Vsc2UKKyAgICAgICAgc3RydWN0IHRtIHQz
OworICAgICAgICBsb2NhbHRpbWVfcigmemVybywgJnQzKTsKKyAgICAgICAgdXRjT2Zmc2V0ID0g
dDMudG1fZ210b2ZmOworICAgICAgICB0LT50bV9pc2RzdCA9IHQzLnRtX2lzZHN0OwogI2VuZGlm
CiAgICAgfSBlbHNlIHsKICAgICAgICAgdXRjT2Zmc2V0ID0gMDsKICAgICAgICAgdC0+dG1faXNk
c3QgPSAtMTsKICAgICB9Ci0gICAgCisKKyNpZmRlZiBfX0FQUExFX18KICAgICAvLyB0LT50bV95
ZWFyIG11c3QgaG9sZCB0aGUgYnVsayBvZiB0aGUgZGF0YSB0byBhdm9pZCBvdmVyZmxvdyB3aGVu
IGNvbnZlcnRpbmcKICAgICAvLyB0byBhIENGR3JlZ29yaWFuRGF0ZS4gKENGR3JlZ29yaWFuRGF0
ZS5tb250aCBpcyBhbiBTSW50ODsgQ0ZHcmVnb3JpYW5EYXRlLnllYXIgaXMgYW4gU0ludDMyLikK
ICAgICB0LT50bV95ZWFyICs9IHQtPnRtX21vbiAvIDEyOwogICAgIHQtPnRtX21vbiAlPSAxMjsK
LSAgICAKKyNlbmRpZiAgICAKIAogICAgIGRvdWJsZSB5ZWFyT2Zmc2V0ID0gMC4wOwogICAgIGlm
ICh0LT50bV95ZWFyIDwgKDE5NzAgLSAxOTAwKSB8fCB0LT50bV95ZWFyID4gKDIwMzggLSAxOTAw
KSkgewpJbmRleDogaWRlbnRpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L0phdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4yMApkaWZmIC11IC0zIC1wIC1yMS4yMCBpZGVudGlmaWVyLmNwcAotLS0gaWRlbnRpZmllci5j
cHAJMjcgU2VwIDIwMDUgMjI6MzY6NDkgLTAwMDAJMS4yMAorKysgaWRlbnRpZmllci5jcHAJMyBP
Y3QgMjAwNSAxOTo0OToyOCAtMDAwMApAQCAtMjUsNyArMjUsNyBAQAogLy8gcG9ydGFibGUsIGFu
ZCBpdCB3b3VsZCBiZSBnb29kIHRvIGZpZ3VyZSBvdXQgYSAxMDAlIGNsZWFuIHdheSB0aGF0IHN0
aWxsIGF2b2lkcyBjb2RlIHRoYXQKIC8vIHJ1bnMgYXQgaW5pdCB0aW1lLgogCi0jaWYgIVdJTjMy
IC8vIGNhbid0IGdldCB0aGlzIHRvIGNvbXBpbGUgb24gVmlzdWFsIEMrKyB5ZXQKKyNpZiAhZGVm
aW5lZChXSU4zMikgLy8gY2FuJ3QgZ2V0IHRoaXMgdG8gY29tcGlsZSBvbiBWaXN1YWwgQysrIHll
dAogI2RlZmluZSBBVk9JRF9TVEFUSUNfQ09OU1RSVUNUT1JTIDEKICNlbmRpZgogCkluZGV4OiBp
bnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L0phdmFTY3JpcHRDb3Jl
L2tqcy9pbnRlcm5hbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNzQKZGlmZiAtdSAtMyAt
cCAtcjEuNzQgaW50ZXJuYWwuY3BwCi0tLSBpbnRlcm5hbC5jcHAJMjggU2VwIDIwMDUgMjI6MDE6
MTYgLTAwMDAJMS43NAorKysgaW50ZXJuYWwuY3BwCTMgT2N0IDIwMDUgMTk6NDk6MjggLTAwMDAK
QEAgLTQ2LDcgKzQ2LDcgQEAKIAogI2luY2x1ZGUgPGt4bWxjb3JlL0hhc2hNYXAuaD4KIAotI2lm
IFdJTjMyCisjaWYgZGVmaW5lZChXSU4zMikKICNpbmNsdWRlIDxmbG9hdC5oPgogI2RlZmluZSBj
b3B5c2lnbihhLCBiKSBfY29weXNpZ24oYSwgYikKICNlbmRpZgpAQCAtNzMsMTUgKzczLDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgCiAjZW5kaWYgLy8gQVBQTEVfQ0hBTkdFUwogCi0jaWYgIUtKU19N
VUxUSVBMRV9USFJFQURTCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplSW50ZXJwcmV0
ZXJMb2NrKCkgeyB9Ci1zdGF0aWMgaW5saW5lIHZvaWQgbG9ja0ludGVycHJldGVyKCkgeyB9Ci1z
dGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrSW50ZXJwcmV0ZXIoKSB7IH0KLQotY29uc3QgaW50IGlu
dGVycHJldGVyTG9ja0NvdW50ID0gMTsKLQotI2Vsc2UKKyNpZiBkZWZpbmVkKEtKU19NVUxUSVBM
RV9USFJFQURTKSAmJiBLSlNfTVVMVElQTEVfVEhSRUFEUwogCiBzdGF0aWMgcHRocmVhZF9vbmNl
X3QgaW50ZXJwcmV0ZXJMb2NrT25jZSA9IFBUSFJFQURfT05DRV9JTklUOwogc3RhdGljIHB0aHJl
YWRfbXV0ZXhfdCBpbnRlcnByZXRlckxvY2s7CkBAIC0xMTEsMjYgKzEwMywzNCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgdW5sb2NrSW50ZXJwcmV0ZXIoKQogICBwdGhyZWFkX211dGV4X3VubG9jaygm
aW50ZXJwcmV0ZXJMb2NrKTsKIH0KIAorI2Vsc2UKKworc3RhdGljIGlubGluZSB2b2lkIGluaXRp
YWxpemVJbnRlcnByZXRlckxvY2soKSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2NrSW50ZXJw
cmV0ZXIoKSB7IH0KK3N0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tJbnRlcnByZXRlcigpIHsgfQor
Citjb25zdCBpbnQgaW50ZXJwcmV0ZXJMb2NrQ291bnQgPSAxOworCiAjZW5kaWYKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVuZGVmaW5lZEltcCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAotVmFsdWVJbXAgKlVuZGVmaW5lZEltcDo6dG9QcmltaXRpdmUo
RXhlY1N0YXRlICovKmV4ZWMqLywgVHlwZSkgY29uc3QKK1ZhbHVlSW1wICpVbmRlZmluZWRJbXA6
OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqIC8qZXhlYyovLCBUeXBlKSBjb25zdAogewogICByZXR1
cm4gY29uc3RfY2FzdDxVbmRlZmluZWRJbXAgKj4odGhpcyk7CiB9CiAKLWJvb2wgVW5kZWZpbmVk
SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2Jvb2wgVW5kZWZpbmVk
SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICogLypleGVjKi8pIGNvbnN0CiB7CiAgIHJldHVybiBm
YWxzZTsKIH0KIAotZG91YmxlIFVuZGVmaW5lZEltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICovKmV4
ZWMqLykgY29uc3QKK2RvdWJsZSBVbmRlZmluZWRJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqIC8q
ZXhlYyovKSBjb25zdAogewogICByZXR1cm4gTmFOOwogfQogCi1VU3RyaW5nIFVuZGVmaW5lZElt
cDo6dG9TdHJpbmcoRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK1VTdHJpbmcgVW5kZWZpbmVk
SW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuICJ1
bmRlZmluZWQiOwogfQpAQCAtMTQyLDIyICsxNDIsMjIgQEAgT2JqZWN0SW1wICpVbmRlZmluZWRJ
bXA6OnRvT2JqZWN0KEV4ZWNTdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
TnVsbEltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1WYWx1ZUlt
cCAqTnVsbEltcDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlICovKmV4ZWMqLywgVHlwZSkgY29uc3QK
K1ZhbHVlSW1wICpOdWxsSW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKiAvKmV4ZWMqLywgVHlw
ZSkgY29uc3QKIHsKICAgcmV0dXJuIGNvbnN0X2Nhc3Q8TnVsbEltcCAqPih0aGlzKTsKIH0KIAot
Ym9vbCBOdWxsSW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2Jvb2wg
TnVsbEltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1
cm4gZmFsc2U7CiB9CiAKLWRvdWJsZSBOdWxsSW1wOjp0b051bWJlcihFeGVjU3RhdGUgKi8qZXhl
YyovKSBjb25zdAorZG91YmxlIE51bGxJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqIC8qZXhlYyov
KSBjb25zdAogewogICByZXR1cm4gMC4wOwogfQogCi1VU3RyaW5nIE51bGxJbXA6OnRvU3RyaW5n
KEV4ZWNTdGF0ZSAqLypleGVjKi8pIGNvbnN0CitVU3RyaW5nIE51bGxJbXA6OnRvU3RyaW5nKEV4
ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gIm51bGwiOwogfQpAQCAtMTY5
LDIyICsxNjksMjIgQEAgT2JqZWN0SW1wICpOdWxsSW1wOjp0b09iamVjdChFeGVjU3RhdGUgKgog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQm9vbGVhbkltcCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1WYWx1ZUltcCAqQm9vbGVhbkltcDo6dG9Qcmlt
aXRpdmUoRXhlY1N0YXRlICovKmV4ZWMqLywgVHlwZSkgY29uc3QKK1ZhbHVlSW1wICpCb29sZWFu
SW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKiAvKmV4ZWMqLywgVHlwZSkgY29uc3QKIHsKICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8Qm9vbGVhbkltcCAqPih0aGlzKTsKIH0KIAotYm9vbCBCb29sZWFu
SW1wOjp0b0Jvb2xlYW4oRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2Jvb2wgQm9vbGVhbklt
cDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gdmFs
OwogfQogCi1kb3VibGUgQm9vbGVhbkltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICovKmV4ZWMqLykg
Y29uc3QKK2RvdWJsZSBCb29sZWFuSW1wOjp0b051bWJlcihFeGVjU3RhdGUgKiAvKmV4ZWMqLykg
Y29uc3QKIHsKICAgcmV0dXJuIHZhbCA/IDEuMCA6IDAuMDsKIH0KIAotVVN0cmluZyBCb29sZWFu
SW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKi8qZXhlYyovKSBjb25zdAorVVN0cmluZyBCb29sZWFu
SW1wOjp0b1N0cmluZyhFeGVjU3RhdGUgKiAvKmV4ZWMqLykgY29uc3QKIHsKICAgcmV0dXJuIHZh
bCA/ICJ0cnVlIiA6ICJmYWxzZSI7CiB9CkBAIC0xOTgsMjIgKzE5OCwyMiBAQCBPYmplY3RJbXAg
KkJvb2xlYW5JbXA6OnRvT2JqZWN0KEV4ZWNTdGF0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBTdHJpbmdJbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVZhbHVlSW1wICpTdHJpbmdJbXA6OnRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSAqLypleGVjKi8s
IFR5cGUpIGNvbnN0CitWYWx1ZUltcCAqU3RyaW5nSW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUg
KiAvKmV4ZWMqLywgVHlwZSkgY29uc3QKIHsKICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U3RyaW5nSW1w
ICo+KHRoaXMpOwogfQogCi1ib29sIFN0cmluZ0ltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqLypl
eGVjKi8pIGNvbnN0Citib29sIFN0cmluZ0ltcDo6dG9Cb29sZWFuKEV4ZWNTdGF0ZSAqIC8qZXhl
YyovKSBjb25zdAogewogICByZXR1cm4gKHZhbC5zaXplKCkgPiAwKTsKIH0KIAotZG91YmxlIFN0
cmluZ0ltcDo6dG9OdW1iZXIoRXhlY1N0YXRlICovKmV4ZWMqLykgY29uc3QKK2RvdWJsZSBTdHJp
bmdJbXA6OnRvTnVtYmVyKEV4ZWNTdGF0ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4g
dmFsLnRvRG91YmxlKCk7CiB9CiAKLVVTdHJpbmcgU3RyaW5nSW1wOjp0b1N0cmluZyhFeGVjU3Rh
dGUgKi8qZXhlYyovKSBjb25zdAorVVN0cmluZyBTdHJpbmdJbXA6OnRvU3RyaW5nKEV4ZWNTdGF0
ZSAqIC8qZXhlYyovKSBjb25zdAogewogICByZXR1cm4gdmFsOwogfQpJbmRleDogaW50ZXJuYWwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL2ludGVy
bmFsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDEKZGlmZiAtdSAtMyAtcCAtcjEuNDEgaW50
ZXJuYWwuaAotLS0gaW50ZXJuYWwuaAkyNyBTZXAgMjAwNSAyMjozNjo0OSAtMDAwMAkxLjQxCisr
KyBpbnRlcm5hbC5oCTMgT2N0IDIwMDUgMTk6NDk6MjggLTAwMDAKQEAgLTM0LDcgKzM0LDcgQEAK
ICNpbmNsdWRlICJzY29wZV9jaGFpbi5oIgogI2luY2x1ZGUgPGt4bWxjb3JlL1NoYXJlZFB0ci5o
PgogCi0jaWYgIVdJTjMyCisjaWYgZGVmaW5lZChfX0FQUExFX18pCiAjZGVmaW5lIEtKU19NVUxU
SVBMRV9USFJFQURTIDEKICNlbmRpZgogCkluZGV4OiBwcm90ZWN0ZWRfdmFsdWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL3Byb3RlY3RlZF92
YWx1ZXMuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtdSAtMyAtcCAtcjEuNiBw
cm90ZWN0ZWRfdmFsdWVzLmNwcAotLS0gcHJvdGVjdGVkX3ZhbHVlcy5jcHAJMTkgU2VwIDIwMDUg
MDY6NTc6MjggLTAwMDAJMS42CisrKyBwcm90ZWN0ZWRfdmFsdWVzLmNwcAkzIE9jdCAyMDA1IDE5
OjQ5OjI4IC0wMDAwCkBAIC0yMCw2ICsyMCw4IEBACiAgKgogICovCiAKKyNpbmNsdWRlIDxzdGRs
aWIuaD4KKwogI2luY2x1ZGUgInByb3RlY3RlZF92YWx1ZXMuaCIKIAogI2luY2x1ZGUgInBvaW50
ZXJfaGFzaC5oIgo=
</data>
<flag name="review"
          id="675"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>