<?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>32845</bug_id>
          
          <creation_ts>2009-12-21 18:43:34 -0800</creation_ts>
          <short_desc>[Chromium] WebGL crashes intermittently on Linux</short_desc>
          <delta_ts>2009-12-29 15:57:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>32890</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>agl</cc>
    
    <cc>brettw</cc>
    
    <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>fishd</cc>
    
    <cc>oliver</cc>
    
    <cc>petersont</cc>
    
    <cc>rlp</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174152</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-21 18:43:34 -0800</bug_when>
    <thetext>Testing of the WebGL demos at http://khronos.org/webgl/wiki/Demo_Repository with Chromium on Linux results in intermittent crashes and displays of the &quot;Aw, snap!&quot; page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174158</commentid>
    <comment_count>1</comment_count>
      <attachid>45362</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-21 19:37:04 -0800</bug_when>
    <thetext>Created attachment 45362
Patch

The dlclose&apos;ing of libGL.so.1 and dlopen&apos;ing of it each time a GraphicsContext3D was created was occasionally causing it to be re-mapped at a different base address. Since GLEW is not re-initialized every time, primarily for performance reasons, its cached function pointers were pointing to garbage. Stopped closing and re-opening libGL.so.1 each time; now it is loaded lazily, when the first 3D context is created. Also reused the X display connection since the GLX routines&apos; correctness might hinge upon it not resulting in a change of GL implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174159</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-21 19:41:36 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45362 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174173</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-21 21:39:51 -0800</bug_when>
    <thetext>Commentary from one of the linux folks would make this review easier. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174308</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-12-22 10:56:24 -0800</bug_when>
    <thetext>LGTM. I didn&apos;t know that WebGL was even supposed to work on Linux, nor how it&apos;s getting a connection to the X server.

So the patch looks fine, but if it actually runs then there&apos;s something terribly wrong with our sandbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174314</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 11:14:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; LGTM. I didn&apos;t know that WebGL was even supposed to work on Linux, nor how it&apos;s
&gt; getting a connection to the X server.
&gt; 
&gt; So the patch looks fine, but if it actually runs then there&apos;s something
&gt; terribly wrong with our sandbox.

Thanks for your review.

WebGL does work in Chromium on Linux and its other supported platforms (see http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation), but yes, it currently requires disabling the sandbox which is very undesirable. We&apos;re working to remove this requirement.

Can you r+ and cq+ the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174339</commentid>
    <comment_count>6</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-12-22 12:55:04 -0800</bug_when>
    <thetext>Did you consider making a class out of all the statics and then having a static instance of that class?  (It might also make the diff smaller.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174343</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2009-12-22 13:01:16 -0800</bug_when>
    <thetext>(Note: I am not a WebKit reviewer, so I cannot r+ your patch.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174347</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 13:07:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Did you consider making a class out of all the statics and then having a static
&gt; instance of that class?  (It might also make the diff smaller.)

I think that would end up being more complicated.

Note that all of the code in this file is essentially temporary until we move the 3D calls into Chromium&apos;s upcoming GPU process, so I didn&apos;t want to do extensive refactorings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174350</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 13:09:00 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (Note: I am not a WebKit reviewer, so I cannot r+ your patch.)

No problem. How can I get this committed? A co-worker needs to do work in the same portions of this file, so I would really like to get it checked in now so we don&apos;t collide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174352</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 13:09:51 -0800</bug_when>
    <thetext>I&apos;ll take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174358</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 13:20:09 -0800</bug_when>
    <thetext>Looking again, I agree with Evan, this would probably all be cleaner held behind one static pointer instead of adding a whole bunch of static pointers (with unclear lifetimes) to the main class.  Putting them all in one place leaves them as m_ vars and makes their lifetime clear.  You could even make them a struct instead if that would be cleaner.  Then the calls become: s_libGL-&gt;glXChooseFBConfig()

Can you explain more about how this is temporary?  If we&apos;re about to delete this code, do we need to fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174366</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 13:40:53 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Looking again, I agree with Evan, this would probably all be cleaner held
&gt; behind one static pointer instead of adding a whole bunch of static pointers
&gt; (with unclear lifetimes) to the main class.  Putting them all in one place
&gt; leaves them as m_ vars and makes their lifetime clear.  You could even make
&gt; them a struct instead if that would be cleaner.  Then the calls become:
&gt; s_libGL-&gt;glXChooseFBConfig()

OK, I&apos;ll make these changes and upload a new patch.

&gt; Can you explain more about how this is temporary?  If we&apos;re about to delete
&gt; this code, do we need to fix it?

We anticipate moving these calls out of the renderer process next quarter. In the interim we must fix the issue as the crashes are very noticeable and poor behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174392</commentid>
    <comment_count>13</comment_count>
      <attachid>45403</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 14:19:00 -0800</bug_when>
    <thetext>Created attachment 45403
Revised patch

Factored new statics into a separate GLConnection class, of which there is a static instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174395</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-22 14:23:17 -0800</bug_when>
    <thetext>Attachment 45403 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/src/GraphicsContext3D.cpp:201:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/src/GraphicsContext3D.cpp:212:  render_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebKit/chromium/src/GraphicsContext3D.cpp:212:  share_list is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174402</commentid>
    <comment_count>15</comment_count>
      <attachid>45405</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 14:30:50 -0800</bug_when>
    <thetext>Created attachment 45405
Revised patch

Fixed errors reported by style-queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174407</commentid>
    <comment_count>16</comment_count>
      <attachid>45405</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 14:35:08 -0800</bug_when>
    <thetext>Comment on attachment 45405
Revised patch

You beat me!  Now my comments are probably mostly obsolete:

A few naming issues.  Some of which the stylebot caught.

We generally try to encouage full names like &quot;display&quot; instead of &quot;dpy&quot;

It&apos;s unclear to me if s_initializedGLEW is still needed or if a s_gl check would be enough now?

I think some folks use sizeof(libnames[0]) in this case:
 319         for (int i = 0; i &lt; sizeof(libNames) / sizeof(const char*); i++)
Sadly we don&apos;t have a template function for that, ojan recently filed a bug about htat.

I think we should fix the style-bot errors, but otherwise this is ready to land.  I can&apos;t remember if you&apos;re a committer yet or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174409</commentid>
    <comment_count>17</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-12-22 14:39:21 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 45405 [details])
&gt; You beat me!  Now my comments are probably mostly obsolete:
&gt; 
&gt; A few naming issues.  Some of which the stylebot caught.
&gt; 
&gt; We generally try to encouage full names like &quot;display&quot; instead of &quot;dpy&quot;

I just copied these names out of the GLX headers.

&gt; It&apos;s unclear to me if s_initializedGLEW is still needed or if a s_gl check
&gt; would be enough now?

s_initializedGLEW is still needed on all platforms.

&gt; I think some folks use sizeof(libnames[0]) in this case:
&gt;  319         for (int i = 0; i &lt; sizeof(libNames) / sizeof(const char*); i++)
&gt; Sadly we don&apos;t have a template function for that, ojan recently filed a bug
&gt; about htat.

Thanks for the suggestion. I&apos;ll certainly keep this in mind and if you want me to change it here now I will.

&gt; I think we should fix the style-bot errors, but otherwise this is ready to
&gt; land.  I can&apos;t remember if you&apos;re a committer yet or not.

Style fixes done as you&apos;ve seen. I&apos;m not a committer yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174410</commentid>
    <comment_count>18</comment_count>
      <attachid>45405</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 14:41:00 -0800</bug_when>
    <thetext>Comment on attachment 45405
Revised patch

Looks plenty good enough for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174414</commentid>
    <comment_count>19</comment_count>
      <attachid>45405</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-22 14:48:18 -0800</bug_when>
    <thetext>Comment on attachment 45405
Revised patch

Rejecting patch 45405 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Last 500 characters of output:
outTests
Testing 11820 test cases.
http/tests/loading/bad-server-subframe.html -&gt; timed out
Sampling process 7092 for 10 seconds with 10 milliseconds of run time between samples
Sampling completed, processing symbols...
Sample analysis of process 7092 written to file /Users/eseidel/Library/Logs/DumpRenderTree/HangReport.txt

Exiting early after 1 failures. 8746 tests run.
210.59s total testing time

8745 test cases (99%) succeeded
1 test case (&lt;1%) timed out
4 test cases (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/138507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174419</commentid>
    <comment_count>20</comment_count>
      <attachid>45405</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-22 14:52:32 -0800</bug_when>
    <thetext>Comment on attachment 45405
Revised patch

Your patch was another victim of bug 30392.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174425</commentid>
    <comment_count>21</comment_count>
      <attachid>45405</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-22 15:00:27 -0800</bug_when>
    <thetext>Comment on attachment 45405
Revised patch

Clearing flags on attachment: 45405

Committed r52504: &lt;http://trac.webkit.org/changeset/52504&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174426</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-22 15:00:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174570</commentid>
    <comment_count>23</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-12-23 04:22:50 -0800</bug_when>
    <thetext>BTW, I&apos;m surprised you need the libNames list; dlopen knows to search the library path if you give it a plain filename without slashes (which will also make this code work for people who have libGL in /usr/local/lib or whatever)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175732</commentid>
    <comment_count>24</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-12-29 15:57:57 -0800</bug_when>
    <thetext>For those who care, I filed
  https://bugs.webkit.org/show_bug.cgi?id=33032
about the dlopen thing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45362</attachid>
            <date>2009-12-21 19:37:04 -0800</date>
            <delta_ts>2009-12-22 14:19:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>crash.patch</filename>
            <type>text/plain</type>
            <size>11606</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTI0NzUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMTItMjEgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gV2ViR0wgY3Jhc2hlcyBpbnRlcm1pdHRl
bnRseSBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzI4NDUKKyAgICAgICAgCisgICAgICAgIFRoZSBkbGNsb3NlJ2luZyBvZiBsaWJHTC5z
by4xIGFuZCBkbG9wZW4naW5nIG9mIGl0IGVhY2ggdGltZSBhCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEIHdhcyBjcmVhdGVkIHdhcyBvY2Nhc2lvbmFsbHkgY2F1c2luZyBpdCB0byBiZQorICAg
ICAgICByZS1tYXBwZWQgYXQgYSBkaWZmZXJlbnQgYmFzZSBhZGRyZXNzLiBTaW5jZSBHTEVXIGlz
IG5vdAorICAgICAgICByZS1pbml0aWFsaXplZCBldmVyeSB0aW1lLCBwcmltYXJpbHkgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMsIGl0cworICAgICAgICBjYWNoZWQgZnVuY3Rpb24gcG9pbnRlcnMg
d2VyZSBwb2ludGluZyB0byBnYXJiYWdlLiBTdG9wcGVkIGNsb3NpbmcKKyAgICAgICAgYW5kIHJl
LW9wZW5pbmcgbGliR0wuc28uMSBlYWNoIHRpbWU7IG5vdyBpdCBpcyBsb2FkZWQgbGF6aWx5LCB3
aGVuCisgICAgICAgIHRoZSBmaXJzdCAzRCBjb250ZXh0IGlzIGNyZWF0ZWQuIEFsc28gcmV1c2Vk
IHRoZSBYIGRpc3BsYXkKKyAgICAgICAgY29ubmVjdGlvbiBzaW5jZSB0aGUgR0xYIHJvdXRpbmVz
JyBjb3JyZWN0bmVzcyBtaWdodCBoaW5nZSB1cG9uIGl0CisgICAgICAgIG5vdCByZXN1bHRpbmcg
aW4gYSBjaGFuZ2Ugb2YgR0wgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjptYWtlQ29udGV4dEN1cnJl
bnQpOgorCiAyMDA5LTEyLTE4ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTI0NjgpCisrKyBXZWJLaXQvY2hy
b21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYg
KzE4MSw3IEBAIHByaXZhdGU6CiAgICAgU2tCaXRtYXAqIG1fcmVzaXppbmdCaXRtYXA7CiAjZW5k
aWYKIAorICAgIHN0YXRpYyBib29sIHNfaW5pdGlhbGl6ZWRHTEVXOwogI2lmIFBMQVRGT1JNKFdJ
Tl9PUykKICAgICBIV05EICBtX2NhbnZhc1dpbmRvdzsKICAgICBIREMgICBtX2NhbnZhc0RDOwpA
QCAtMTkwLDI4ICsxOTEsNDEgQEAgcHJpdmF0ZToKICAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4
dE9iajsKICAgICB1bnNpZ25lZCBjaGFyKiBtX3JlbmRlck91dHB1dDsKICNlbGlmIFBMQVRGT1JN
KExJTlVYKQotICAgIERpc3BsYXkqIG1fZGlzcGxheTsKLSAgICBHTFhDb250ZXh0IG1fY29udGV4
dE9iajsKLSAgICBHTFhQYnVmZmVyIG1fcGJ1ZmZlcjsKICAgICAvLyBJbiBvcmRlciB0byBhdm9p
ZCBwcm9ibGVtcyBjYXVzZWQgYnkgbGlua2luZyBhZ2FpbnN0IGxpYkdMLCB3ZQogICAgIC8vIGR5
bmFtaWNhbGx5IGxvb2sgdXAgYWxsIHRoZSBzeW1ib2xzIHdlIG5lZWQuCiAgICAgLy8gaHR0cDov
L2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTY4MDAKLSAgICB2
b2lkKiBtX2xpYkdMOwotICAgIFBGTkdMWENIT09TRUZCQ09ORklHUFJPQyBtX2dsWENob29zZUZC
Q29uZmlnOwotICAgIFBGTkdMWENSRUFURU5FV0NPTlRFWFRQUk9DIG1fZ2xYQ3JlYXRlTmV3Q29u
dGV4dDsKLSAgICBQRk5HTFhDUkVBVEVQQlVGRkVSUFJPQyBtX2dsWENyZWF0ZVBidWZmZXI7Ci0g
ICAgUEZOR0xYREVTVFJPWVBCVUZGRVJQUk9DIG1fZ2xYRGVzdHJveVBidWZmZXI7CisgICAgc3Rh
dGljIHZvaWQqIHNfbGliR0w7CisgICAgc3RhdGljIERpc3BsYXkqIHNfZGlzcGxheTsKKyAgICBz
dGF0aWMgUEZOR0xYQ0hPT1NFRkJDT05GSUdQUk9DIHNfZ2xYQ2hvb3NlRkJDb25maWc7CisgICAg
c3RhdGljIFBGTkdMWENSRUFURU5FV0NPTlRFWFRQUk9DIHNfZ2xYQ3JlYXRlTmV3Q29udGV4dDsK
KyAgICBzdGF0aWMgUEZOR0xYQ1JFQVRFUEJVRkZFUlBST0Mgc19nbFhDcmVhdGVQYnVmZmVyOwor
ICAgIHN0YXRpYyBQRk5HTFhERVNUUk9ZUEJVRkZFUlBST0Mgc19nbFhEZXN0cm95UGJ1ZmZlcjsK
ICAgICB0eXBlZGVmIEJvb2wgKCogUEZOR0xYTUFLRUNVUlJFTlRQUk9DKShEaXNwbGF5KiBkcHks
IEdMWERyYXdhYmxlIGRyYXdhYmxlLCBHTFhDb250ZXh0IGN0eCk7Ci0gICAgUEZOR0xYTUFLRUNV
UlJFTlRQUk9DIG1fZ2xYTWFrZUN1cnJlbnQ7CisgICAgc3RhdGljIFBGTkdMWE1BS0VDVVJSRU5U
UFJPQyBzX2dsWE1ha2VDdXJyZW50OwogICAgIHR5cGVkZWYgdm9pZCAoKiBQRk5HTFhERVNUUk9Z
Q09OVEVYVFBST0MpKERpc3BsYXkqIGRweSwgR0xYQ29udGV4dCBjdHgpOwotICAgIFBGTkdMWERF
U1RST1lDT05URVhUUFJPQyBtX2dsWERlc3Ryb3lDb250ZXh0OworICAgIHN0YXRpYyBQRk5HTFhE
RVNUUk9ZQ09OVEVYVFBST0Mgc19nbFhEZXN0cm95Q29udGV4dDsKICAgICB0eXBlZGVmIEdMWENv
bnRleHQgKCogUEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DKSh2b2lkKTsKLSAgICBQRk5HTFhH
RVRDVVJSRU5UQ09OVEVYVFBST0MgbV9nbFhHZXRDdXJyZW50Q29udGV4dDsKKyAgICBzdGF0aWMg
UEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DIHNfZ2xYR2V0Q3VycmVudENvbnRleHQ7CisgICAg
R0xYQ29udGV4dCBtX2NvbnRleHRPYmo7CisgICAgR0xYUGJ1ZmZlciBtX3BidWZmZXI7CiAjZWxz
ZQogICAgICNlcnJvciBNdXN0IHBvcnQgR3JhcGhpY3NDb250ZXh0M0QgdG8geW91ciBwbGF0Zm9y
bQogI2VuZGlmCiB9OwogCitib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnNfaW5pdGlh
bGl6ZWRHTEVXID0gZmFsc2U7CisjaWYgUExBVEZPUk0oTElOVVgpCit2b2lkKiBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpzX2xpYkdMID0gMDsKK0Rpc3BsYXkqIEdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OnNfZGlzcGxheSA9IDA7CitQRk5HTFhDSE9PU0VGQkNPTkZJR1BST0MgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6c19nbFhDaG9vc2VGQkNvbmZpZyA9IDA7CitQRk5HTFhDUkVB
VEVORVdDT05URVhUUFJPQyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzX2dsWENyZWF0ZU5l
d0NvbnRleHQgPSAwOworUEZOR0xYQ1JFQVRFUEJVRkZFUlBST0MgR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbDo6c19nbFhDcmVhdGVQYnVmZmVyID0gMDsKK1BGTkdMWERFU1RST1lQQlVGRkVSUFJP
QyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpzX2dsWERlc3Ryb3lQYnVmZmVyID0gMDsKK0dy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OlBGTkdMWE1BS0VDVVJSRU5UUFJPQyBHcmFwaGljc0Nv
bnRleHQzREludGVybmFsOjpzX2dsWE1ha2VDdXJyZW50ID0gMDsKK0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OlBGTkdMWERFU1RST1lDT05URVhUUFJPQyBHcmFwaGljc0NvbnRleHQzREludGVy
bmFsOjpzX2dsWERlc3Ryb3lDb250ZXh0ID0gMDsKK0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OlBGTkdMWEdFVENVUlJFTlRDT05URVhUUFJPQyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpz
X2dsWEdldEN1cnJlbnRDb250ZXh0ID0gMDsKKyNlbmRpZgorCiBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpWZXJ0ZXhBdHRyaWJQb2ludGVyU3RhdGU6OlZlcnRleEF0dHJpYlBvaW50ZXJTdGF0
ZSgpCiAgICAgOiBlbmFibGVkKGZhbHNlKQogICAgICwgYnVmZmVyKDApCkBAIC0yNTUsMTYgKzI2
OSw4IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICAgICAsIG1f
Y29udGV4dE9iaigwKQogICAgICwgbV9yZW5kZXJPdXRwdXQoMCkKICNlbGlmIFBMQVRGT1JNKExJ
TlVYKQotICAgICwgbV9kaXNwbGF5KDApCiAgICAgLCBtX2NvbnRleHRPYmooMCkKICAgICAsIG1f
cGJ1ZmZlcigwKQotICAgICwgbV9nbFhDaG9vc2VGQkNvbmZpZygwKQotICAgICwgbV9nbFhDcmVh
dGVOZXdDb250ZXh0KDApCi0gICAgLCBtX2dsWENyZWF0ZVBidWZmZXIoMCkKLSAgICAsIG1fZ2xY
RGVzdHJveVBidWZmZXIoMCkKLSAgICAsIG1fZ2xYTWFrZUN1cnJlbnQoMCkKLSAgICAsIG1fZ2xY
RGVzdHJveUNvbnRleHQoMCkKLSAgICAsIG1fZ2xYR2V0Q3VycmVudENvbnRleHQoMCkKICNlbHNl
CiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgpAQCAtMzgyLDQxICsz
ODgsNDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgIG1f
cGJ1ZmZlciA9IHBidWZmZXI7CiAgICAgbV9jb250ZXh0T2JqID0gY29udGV4dDsKICNlbGlmIFBM
QVRGT1JNKExJTlVYKQotICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKLSAgICBpZiAo
IW1fZGlzcGxheSkgewotICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJvciBv
cGVuaW5nIFggZGlzcGxheVxuIik7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNfZGlzcGxh
eSkgeworICAgICAgICBzX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXkoMCk7CisgICAgICAgIGlmICgh
c19kaXNwbGF5KSB7CisgICAgICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJv
ciBvcGVuaW5nIFggZGlzcGxheVxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
ICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBsaWJOYW1lc1tdID0gewotICAgICAgICAiL3Vzci9s
aWIvbGliR0wuc28uMSIsCi0gICAgICAgICIvdXNyL2xpYjMyL2xpYkdMLnNvLjEiLAotICAgICAg
ICAiL3Vzci9saWI2NC9saWJHTC5zby4xIiwKLSAgICB9OwotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZW9mKGxpYk5hbWVzKSAvIHNpemVvZihjb25zdCBjaGFyKik7IGkrKykgewotICAgICAg
ICBtX2xpYkdMID0gdHJ5TG9hZChsaWJOYW1lc1tpXSk7Ci0gICAgICAgIGlmIChtX2xpYkdMKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmICghbV9saWJHTCkgewotICAgICAgICBw
cmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJvciBvcGVuaW5nIGxpYkdMLnNvLjFcbiIpOwot
ICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiB0cmllZDoiKTsKLSAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplb2YobGliTmFtZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsg
aSsrKQotICAgICAgICAgICAgcHJpbnRmKCIgJXMiLCBsaWJOYW1lc1tpXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgbV9nbFhDaG9vc2VGQkNvbmZpZyA9IChQRk5HTFhDSE9PU0VGQkNP
TkZJR1BST0MpIGRsc3ltKG1fbGliR0wsICJnbFhDaG9vc2VGQkNvbmZpZyIpOwotICAgIG1fZ2xY
Q3JlYXRlTmV3Q29udGV4dCA9IChQRk5HTFhDUkVBVEVORVdDT05URVhUUFJPQykgZGxzeW0obV9s
aWJHTCwgImdsWENyZWF0ZU5ld0NvbnRleHQiKTsKLSAgICBtX2dsWENyZWF0ZVBidWZmZXIgPSAo
UEZOR0xYQ1JFQVRFUEJVRkZFUlBST0MpIGRsc3ltKG1fbGliR0wsICJnbFhDcmVhdGVQYnVmZmVy
Iik7Ci0gICAgbV9nbFhEZXN0cm95UGJ1ZmZlciA9IChQRk5HTFhERVNUUk9ZUEJVRkZFUlBST0Mp
IGRsc3ltKG1fbGliR0wsICJnbFhEZXN0cm95UGJ1ZmZlciIpOwotICAgIG1fZ2xYTWFrZUN1cnJl
bnQgPSAoUEZOR0xYTUFLRUNVUlJFTlRQUk9DKSBkbHN5bShtX2xpYkdMLCAiZ2xYTWFrZUN1cnJl
bnQiKTsKLSAgICBtX2dsWERlc3Ryb3lDb250ZXh0ID0gKFBGTkdMWERFU1RST1lDT05URVhUUFJP
QykgZGxzeW0obV9saWJHTCwgImdsWERlc3Ryb3lDb250ZXh0Iik7Ci0gICAgbV9nbFhHZXRDdXJy
ZW50Q29udGV4dCA9IChQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MpIGRsc3ltKG1fbGliR0ws
ICJnbFhHZXRDdXJyZW50Q29udGV4dCIpOwotICAgIGlmICghbV9nbFhDaG9vc2VGQkNvbmZpZyB8
fCAhbV9nbFhDcmVhdGVOZXdDb250ZXh0IHx8ICFtX2dsWENyZWF0ZVBidWZmZXIKLSAgICAgICAg
fHwgIW1fZ2xYRGVzdHJveVBidWZmZXIgfHwgIW1fZ2xYTWFrZUN1cnJlbnQgfHwgIW1fZ2xYRGVz
dHJveUNvbnRleHQKLSAgICAgICAgfHwgIW1fZ2xYR2V0Q3VycmVudENvbnRleHQpIHsKLSAgICAg
ICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZXJyb3IgbG9va2luZyB1cCBib290c3RyYXBw
aW5nIGVudHJ5IHBvaW50c1xuIik7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNfbGliR0wp
IHsKKyAgICAgICAgY29uc3QgY2hhciogbGliTmFtZXNbXSA9IHsKKyAgICAgICAgICAgICIvdXNy
L2xpYi9saWJHTC5zby4xIiwKKyAgICAgICAgICAgICIvdXNyL2xpYjMyL2xpYkdMLnNvLjEiLAor
ICAgICAgICAgICAgIi91c3IvbGliNjQvbGliR0wuc28uMSIsCisgICAgICAgIH07CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKGxpYk5hbWVzKSAvIHNpemVvZihjb25zdCBjaGFy
Kik7IGkrKykgeworICAgICAgICAgICAgc19saWJHTCA9IHRyeUxvYWQobGliTmFtZXNbaV0pOwor
ICAgICAgICAgICAgaWYgKHNfbGliR0wpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKCFzX2xpYkdMKSB7CisgICAgICAgICAgICBwcmludGYoIkdyYXBoaWNz
Q29udGV4dDNEOiBlcnJvciBvcGVuaW5nIGxpYkdMLnNvLjFcbiIpOworICAgICAgICAgICAgcHJp
bnRmKCJHcmFwaGljc0NvbnRleHQzRDogdHJpZWQ6XG4iKTsKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZW9mKGxpYk5hbWVzKSAvIHNpemVvZihjb25zdCBjaGFyKik7IGkrKykK
KyAgICAgICAgICAgICAgICBwcmludGYoIiAlc1xuIiwgbGliTmFtZXNbaV0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNfZ2xYQ2hvb3NlRkJDb25maWcgPSAoUEZO
R0xYQ0hPT1NFRkJDT05GSUdQUk9DKSBkbHN5bShzX2xpYkdMLCAiZ2xYQ2hvb3NlRkJDb25maWci
KTsKKyAgICAgICAgc19nbFhDcmVhdGVOZXdDb250ZXh0ID0gKFBGTkdMWENSRUFURU5FV0NPTlRF
WFRQUk9DKSBkbHN5bShzX2xpYkdMLCAiZ2xYQ3JlYXRlTmV3Q29udGV4dCIpOworICAgICAgICBz
X2dsWENyZWF0ZVBidWZmZXIgPSAoUEZOR0xYQ1JFQVRFUEJVRkZFUlBST0MpIGRsc3ltKHNfbGli
R0wsICJnbFhDcmVhdGVQYnVmZmVyIik7CisgICAgICAgIHNfZ2xYRGVzdHJveVBidWZmZXIgPSAo
UEZOR0xYREVTVFJPWVBCVUZGRVJQUk9DKSBkbHN5bShzX2xpYkdMLCAiZ2xYRGVzdHJveVBidWZm
ZXIiKTsKKyAgICAgICAgc19nbFhNYWtlQ3VycmVudCA9IChQRk5HTFhNQUtFQ1VSUkVOVFBST0Mp
IGRsc3ltKHNfbGliR0wsICJnbFhNYWtlQ3VycmVudCIpOworICAgICAgICBzX2dsWERlc3Ryb3lD
b250ZXh0ID0gKFBGTkdMWERFU1RST1lDT05URVhUUFJPQykgZGxzeW0oc19saWJHTCwgImdsWERl
c3Ryb3lDb250ZXh0Iik7CisgICAgICAgIHNfZ2xYR2V0Q3VycmVudENvbnRleHQgPSAoUEZOR0xY
R0VUQ1VSUkVOVENPTlRFWFRQUk9DKSBkbHN5bShzX2xpYkdMLCAiZ2xYR2V0Q3VycmVudENvbnRl
eHQiKTsKKyAgICAgICAgaWYgKCFzX2dsWENob29zZUZCQ29uZmlnIHx8ICFzX2dsWENyZWF0ZU5l
d0NvbnRleHQgfHwgIXNfZ2xYQ3JlYXRlUGJ1ZmZlcgorICAgICAgICAgICAgfHwgIXNfZ2xYRGVz
dHJveVBidWZmZXIgfHwgIXNfZ2xYTWFrZUN1cnJlbnQgfHwgIXNfZ2xYRGVzdHJveUNvbnRleHQK
KyAgICAgICAgICAgIHx8ICFzX2dsWEdldEN1cnJlbnRDb250ZXh0KSB7CisgICAgICAgICAgICBk
bGNsb3NlKHNfbGliR0wpOworICAgICAgICAgICAgc19saWJHTCA9IDA7CisgICAgICAgICAgICBw
cmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJvciBsb29raW5nIHVwIGJvb3RzdHJhcHBpbmcg
ZW50cnkgcG9pbnRzXG4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0K
ICAgICBpbnQgY29uZmlnQXR0cnNbXSA9IHsKICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsCkBA
IC00MjgsNyArNDQwLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250
ZQogICAgICAgICAwCiAgICAgfTsKICAgICBpbnQgbmVsZW1lbnRzID0gMDsKLSAgICBHTFhGQkNv
bmZpZyogY29uZmlnID0gbV9nbFhDaG9vc2VGQkNvbmZpZyhtX2Rpc3BsYXksIDAsIGNvbmZpZ0F0
dHJzLCAmbmVsZW1lbnRzKTsKKyAgICBHTFhGQkNvbmZpZyogY29uZmlnID0gc19nbFhDaG9vc2VG
QkNvbmZpZyhzX2Rpc3BsYXksIDAsIGNvbmZpZ0F0dHJzLCAmbmVsZW1lbnRzKTsKICAgICBpZiAo
IWNvbmZpZykgewogICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBnbFhDaG9vc2VG
QkNvbmZpZyBmYWlsZWRcbiIpOwogICAgICAgICByZXR1cm47CkBAIC00MzgsNyArNDUwLDcgQEAg
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgICAgICBYRnJlZShj
b25maWcpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEdMWENvbnRleHQgY29udGV4dCA9
IG1fZ2xYQ3JlYXRlTmV3Q29udGV4dChtX2Rpc3BsYXksIGNvbmZpZ1swXSwgR0xYX1JHQkFfVFlQ
RSwgMCwgVHJ1ZSk7CisgICAgR0xYQ29udGV4dCBjb250ZXh0ID0gc19nbFhDcmVhdGVOZXdDb250
ZXh0KHNfZGlzcGxheSwgY29uZmlnWzBdLCBHTFhfUkdCQV9UWVBFLCAwLCBUcnVlKTsKICAgICBp
ZiAoIWNvbnRleHQpIHsKICAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZ2xYQ3Jl
YXRlTmV3Q29udGV4dCBmYWlsZWRcbiIpOwogICAgICAgICBYRnJlZShjb25maWcpOwpAQCAtNDUx
LDEzICs0NjMsMTMgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQog
ICAgICAgICAxLAogICAgICAgICAwCiAgICAgfTsKLSAgICBHTFhQYnVmZmVyIHBidWZmZXIgPSBt
X2dsWENyZWF0ZVBidWZmZXIobV9kaXNwbGF5LCBjb25maWdbMF0sIHBidWZmZXJBdHRycyk7Cisg
ICAgR0xYUGJ1ZmZlciBwYnVmZmVyID0gc19nbFhDcmVhdGVQYnVmZmVyKHNfZGlzcGxheSwgY29u
ZmlnWzBdLCBwYnVmZmVyQXR0cnMpOwogICAgIFhGcmVlKGNvbmZpZyk7CiAgICAgaWYgKCFwYnVm
ZmVyKSB7CiAgICAgICAgIHByaW50ZigiR3JhcGhpY3NDb250ZXh0M0Q6IGdseENyZWF0ZVBidWZm
ZXIgZmFpbGVkXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIW1fZ2xYTWFr
ZUN1cnJlbnQobV9kaXNwbGF5LCBwYnVmZmVyLCBjb250ZXh0KSkgeworICAgIGlmICghc19nbFhN
YWtlQ3VycmVudChzX2Rpc3BsYXksIHBidWZmZXIsIGNvbnRleHQpKSB7CiAgICAgICAgIHByaW50
ZigiR3JhcGhpY3NDb250ZXh0M0Q6IGdsWE1ha2VDdXJyZW50IGZhaWxlZFxuIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC00NjcsOCArNDc5LDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R3JhcGhpY3NDb250ZQogI2Vycm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCiAj
ZW5kaWYKIAotICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkR0xFVyA9IGZhbHNlOwotICAgIGlm
ICghaW5pdGlhbGl6ZWRHTEVXKSB7CisgICAgaWYgKCFzX2luaXRpYWxpemVkR0xFVykgewogICAg
ICAgICAvLyBJbml0aWFsaXplIEdMRVcgYW5kIGNoZWNrIGZvciBHTCAyLjAgc3VwcG9ydCBieSB0
aGUgZHJpdmVycy4KICAgICAgICAgR0xlbnVtIGdsZXdJbml0UmVzdWx0ID0gZ2xld0luaXQoKTsK
ICAgICAgICAgaWYgKGdsZXdJbml0UmVzdWx0ICE9IEdMRVdfT0spIHsKQEAgLTQ3OSw3ICs0OTAs
NyBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAgICAgICAgICAg
ICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBPcGVuR0wgMi4wIG5vdCBzdXBwb3J0ZWRcbiIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGluaXRpYWxpemVkR0xF
VyA9IHRydWU7CisgICAgICAgIHNfaW5pdGlhbGl6ZWRHTEVXID0gdHJ1ZTsKICAgICB9CiB9CiAK
QEAgLTUxMSwxMSArNTIyLDkgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6fkdyYXBoaWNz
Q29udAogICAgIGlmIChtX3JlbmRlck91dHB1dCkKICAgICAgICAgZGVsZXRlW10gbV9yZW5kZXJP
dXRwdXQ7CiAjZWxpZiBQTEFURk9STShMSU5VWCkKLSAgICBtX2dsWE1ha2VDdXJyZW50KG1fZGlz
cGxheSwgMCwgMCk7Ci0gICAgbV9nbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1fY29udGV4
dE9iaik7Ci0gICAgbV9nbFhEZXN0cm95UGJ1ZmZlcihtX2Rpc3BsYXksIG1fcGJ1ZmZlcik7Ci0g
ICAgWENsb3NlRGlzcGxheShtX2Rpc3BsYXkpOwotICAgIGRsY2xvc2UobV9saWJHTCk7CisgICAg
c19nbFhNYWtlQ3VycmVudChzX2Rpc3BsYXksIDAsIDApOworICAgIHNfZ2xYRGVzdHJveUNvbnRl
eHQoc19kaXNwbGF5LCBtX2NvbnRleHRPYmopOworICAgIHNfZ2xYRGVzdHJveVBidWZmZXIoc19k
aXNwbGF5LCBtX3BidWZmZXIpOwogI2Vsc2UKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0
Zm9ybQogI2VuZGlmCkBAIC01MzMsOCArNTQyLDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjptYWtlQ29udAogICAgICAgICBpZiAoQ0dMU2V0Q3VycmVudENvbnRleHQobV9jb250
ZXh0T2JqKSA9PSBrQ0dMTm9FcnJvcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VsaWYg
UExBVEZPUk0oTElOVVgpCi0gICAgaWYgKG1fZ2xYR2V0Q3VycmVudENvbnRleHQoKSAhPSBtX2Nv
bnRleHRPYmopCi0gICAgICAgIGlmIChtX2dsWE1ha2VDdXJyZW50KG1fZGlzcGxheSwgbV9wYnVm
ZmVyLCBtX2NvbnRleHRPYmopKQorICAgIGlmIChzX2dsWEdldEN1cnJlbnRDb250ZXh0KCkgIT0g
bV9jb250ZXh0T2JqKQorICAgICAgICBpZiAoc19nbFhNYWtlQ3VycmVudChzX2Rpc3BsYXksIG1f
cGJ1ZmZlciwgbV9jb250ZXh0T2JqKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UK
ICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45403</attachid>
            <date>2009-12-22 14:19:00 -0800</date>
            <delta_ts>2009-12-22 14:30:50 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>crash.patch</filename>
            <type>text/plain</type>
            <size>15627</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTI1MDApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMTItMjIgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gV2ViR0wgY3Jhc2hlcyBpbnRlcm1pdHRl
bnRseSBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzI4NDUKKyAgICAgICAgCisgICAgICAgIFRoZSBkbGNsb3NlJ2luZyBvZiBsaWJHTC5z
by4xIGFuZCBkbG9wZW4naW5nIG9mIGl0IGVhY2ggdGltZSBhCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEIHdhcyBjcmVhdGVkIHdhcyBvY2Nhc2lvbmFsbHkgY2F1c2luZyBpdCB0byBiZQorICAg
ICAgICByZS1tYXBwZWQgYXQgYSBkaWZmZXJlbnQgYmFzZSBhZGRyZXNzLiBTaW5jZSBHTEVXIGlz
IG5vdAorICAgICAgICByZS1pbml0aWFsaXplZCBldmVyeSB0aW1lLCBwcmltYXJpbHkgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMsIGl0cworICAgICAgICBjYWNoZWQgZnVuY3Rpb24gcG9pbnRlcnMg
d2VyZSBwb2ludGluZyB0byBnYXJiYWdlLiBTdG9wcGVkIGNsb3NpbmcKKyAgICAgICAgYW5kIHJl
LW9wZW5pbmcgbGliR0wuc28uMSBlYWNoIHRpbWU7IG5vdyBpdCBpcyBsb2FkZWQgbGF6aWx5LCB3
aGVuCisgICAgICAgIHRoZSBmaXJzdCAzRCBjb250ZXh0IGlzIGNyZWF0ZWQuIEFsc28gcmV1c2Vk
IHRoZSBYIGRpc3BsYXkKKyAgICAgICAgY29ubmVjdGlvbiBzaW5jZSB0aGUgR0xYIHJvdXRpbmVz
JyBjb3JyZWN0bmVzcyBtaWdodCBoaW5nZSB1cG9uIGl0CisgICAgICAgIG5vdCByZXN1bHRpbmcg
aW4gYSBjaGFuZ2Ugb2YgR0wgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R0xDb25uZWN0aW9uOjpjaG9vc2VGQkNvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rpb246OmNyZWF0ZU5ld0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0
aW9uOjpjcmVhdGVQYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6ZGVzdHJveVBidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uOjptYWtlQ3VycmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rp
b246OmRlc3Ryb3lDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6Z2V0Q3VycmVudENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uOjpHTENvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25u
ZWN0aW9uOjp0cnlMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdMQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6fkdMQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5H
cmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6Om1ha2VDb250ZXh0Q3VycmVudCk6CisKIDIwMDktMTItMjIgIFlhYXIg
U2Nobml0bWFuICA8eWFhckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAJKHJldmlzaW9uIDUyNDY4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBwcml2YXRlOgogICAg
IFNrQml0bWFwKiBtX3Jlc2l6aW5nQml0bWFwOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgYm9vbCBz
X2luaXRpYWxpemVkR0xFVzsKICNpZiBQTEFURk9STShXSU5fT1MpCiAgICAgSFdORCAgbV9jYW52
YXNXaW5kb3c7CiAgICAgSERDICAgbV9jYW52YXNEQzsKQEAgLTE5MCwyOCArMTkxLDE2OCBAQCBw
cml2YXRlOgogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0T2JqOwogICAgIHVuc2lnbmVkIGNo
YXIqIG1fcmVuZGVyT3V0cHV0OwogI2VsaWYgUExBVEZPUk0oTElOVVgpCi0gICAgRGlzcGxheSog
bV9kaXNwbGF5OwogICAgIEdMWENvbnRleHQgbV9jb250ZXh0T2JqOwogICAgIEdMWFBidWZmZXIg
bV9wYnVmZmVyOworCiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMgY2F1c2VkIGJ5
IGxpbmtpbmcgYWdhaW5zdCBsaWJHTCwgd2UKICAgICAvLyBkeW5hbWljYWxseSBsb29rIHVwIGFs
bCB0aGUgc3ltYm9scyB3ZSBuZWVkLgogICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9j
aHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2ODAwCi0gICAgdm9pZCogbV9saWJHTDsKLSAgICBQ
Rk5HTFhDSE9PU0VGQkNPTkZJR1BST0MgbV9nbFhDaG9vc2VGQkNvbmZpZzsKLSAgICBQRk5HTFhD
UkVBVEVORVdDT05URVhUUFJPQyBtX2dsWENyZWF0ZU5ld0NvbnRleHQ7Ci0gICAgUEZOR0xYQ1JF
QVRFUEJVRkZFUlBST0MgbV9nbFhDcmVhdGVQYnVmZmVyOwotICAgIFBGTkdMWERFU1RST1lQQlVG
RkVSUFJPQyBtX2dsWERlc3Ryb3lQYnVmZmVyOwotICAgIHR5cGVkZWYgQm9vbCAoKiBQRk5HTFhN
QUtFQ1VSUkVOVFBST0MpKERpc3BsYXkqIGRweSwgR0xYRHJhd2FibGUgZHJhd2FibGUsIEdMWENv
bnRleHQgY3R4KTsKLSAgICBQRk5HTFhNQUtFQ1VSUkVOVFBST0MgbV9nbFhNYWtlQ3VycmVudDsK
LSAgICB0eXBlZGVmIHZvaWQgKCogUEZOR0xYREVTVFJPWUNPTlRFWFRQUk9DKShEaXNwbGF5KiBk
cHksIEdMWENvbnRleHQgY3R4KTsKLSAgICBQRk5HTFhERVNUUk9ZQ09OVEVYVFBST0MgbV9nbFhE
ZXN0cm95Q29udGV4dDsKLSAgICB0eXBlZGVmIEdMWENvbnRleHQgKCogUEZOR0xYR0VUQ1VSUkVO
VENPTlRFWFRQUk9DKSh2b2lkKTsKLSAgICBQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MgbV9n
bFhHZXRDdXJyZW50Q29udGV4dDsKKyAgICBjbGFzcyBHTENvbm5lY3Rpb24KKyAgICB7CisgICAg
ICBwdWJsaWM6CisgICAgICAgIH5HTENvbm5lY3Rpb24oKTsKKworICAgICAgICBzdGF0aWMgR0xD
b25uZWN0aW9uKiBjcmVhdGUoKTsKKworICAgICAgICBHTFhGQkNvbmZpZyogY2hvb3NlRkJDb25m
aWcoaW50IHNjcmVlbiwgY29uc3QgaW50ICphdHRyaWJfbGlzdCwgaW50ICpuZWxlbWVudHMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dsWENob29zZUZCQ29uZmlnKG1fZGlzcGxh
eSwgc2NyZWVuLCBhdHRyaWJfbGlzdCwgbmVsZW1lbnRzKTsKKyAgICAgICAgfQorCisgICAgICAg
IEdMWENvbnRleHQgY3JlYXRlTmV3Q29udGV4dChHTFhGQkNvbmZpZyBjb25maWcsIGludCByZW5k
ZXJfdHlwZSwgR0xYQ29udGV4dCBzaGFyZV9saXN0LCBCb29sIGRpcmVjdCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG1fZ2xYQ3JlYXRlTmV3Q29udGV4dChtX2Rpc3BsYXksIGNvbmZp
ZywgcmVuZGVyX3R5cGUsIHNoYXJlX2xpc3QsIGRpcmVjdCk7CisgICAgICAgIH0KKworICAgICAg
ICBHTFhQYnVmZmVyIGNyZWF0ZVBidWZmZXIoR0xYRkJDb25maWcgY29uZmlnLCBjb25zdCBpbnQg
KmF0dHJpYl9saXN0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9nbFhDcmVhdGVQ
YnVmZmVyKG1fZGlzcGxheSwgY29uZmlnLCBhdHRyaWJfbGlzdCk7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGRlc3Ryb3lQYnVmZmVyKEdMWFBidWZmZXIgcGJ1ZikKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9nbFhEZXN0cm95UGJ1ZmZlcihtX2Rpc3BsYXksIHBidWYpOworICAgICAgICB9
CisKKyAgICAgICAgQm9vbCBtYWtlQ3VycmVudChHTFhEcmF3YWJsZSBkcmF3YWJsZSwgR0xYQ29u
dGV4dCBjdHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dsWE1ha2VDdXJyZW50
KG1fZGlzcGxheSwgZHJhd2FibGUsIGN0eCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRl
c3Ryb3lDb250ZXh0KEdMWENvbnRleHQgY3R4KQorICAgICAgICB7CisgICAgICAgICAgICBtX2ds
WERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgY3R4KTsKKyAgICAgICAgfQorCisgICAgICAgIEdM
WENvbnRleHQgZ2V0Q3VycmVudENvbnRleHQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9nbFhHZXRDdXJyZW50Q29udGV4dCgpOworICAgICAgICB9CisKKyAgICAgIHByaXZhdGU6
CisgICAgICAgIERpc3BsYXkqIG1fZGlzcGxheTsKKyAgICAgICAgdm9pZCogbV9saWJHTDsKKyAg
ICAgICAgUEZOR0xYQ0hPT1NFRkJDT05GSUdQUk9DIG1fZ2xYQ2hvb3NlRkJDb25maWc7CisgICAg
ICAgIFBGTkdMWENSRUFURU5FV0NPTlRFWFRQUk9DIG1fZ2xYQ3JlYXRlTmV3Q29udGV4dDsKKyAg
ICAgICAgUEZOR0xYQ1JFQVRFUEJVRkZFUlBST0MgbV9nbFhDcmVhdGVQYnVmZmVyOworICAgICAg
ICBQRk5HTFhERVNUUk9ZUEJVRkZFUlBST0MgbV9nbFhEZXN0cm95UGJ1ZmZlcjsKKyAgICAgICAg
dHlwZWRlZiBCb29sICgqIFBGTkdMWE1BS0VDVVJSRU5UUFJPQykoRGlzcGxheSogZHB5LCBHTFhE
cmF3YWJsZSBkcmF3YWJsZSwgR0xYQ29udGV4dCBjdHgpOworICAgICAgICBQRk5HTFhNQUtFQ1VS
UkVOVFBST0MgbV9nbFhNYWtlQ3VycmVudDsKKyAgICAgICAgdHlwZWRlZiB2b2lkICgqIFBGTkdM
WERFU1RST1lDT05URVhUUFJPQykoRGlzcGxheSogZHB5LCBHTFhDb250ZXh0IGN0eCk7CisgICAg
ICAgIFBGTkdMWERFU1RST1lDT05URVhUUFJPQyBtX2dsWERlc3Ryb3lDb250ZXh0OworICAgICAg
ICB0eXBlZGVmIEdMWENvbnRleHQgKCogUEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DKSh2b2lk
KTsKKyAgICAgICAgUEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DIG1fZ2xYR2V0Q3VycmVudENv
bnRleHQ7CisKKyAgICAgICAgR0xDb25uZWN0aW9uKERpc3BsYXkqIGRpc3BsYXksCisgICAgICAg
ICAgICAgICAgICAgICB2b2lkKiBsaWJHTCwKKyAgICAgICAgICAgICAgICAgICAgIFBGTkdMWENI
T09TRUZCQ09ORklHUFJPQyBjaG9vc2VGQkNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgIFBG
TkdMWENSRUFURU5FV0NPTlRFWFRQUk9DIGNyZWF0ZU5ld0NvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICBQRk5HTFhDUkVBVEVQQlVGRkVSUFJPQyBjcmVhdGVQYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgUEZOR0xYREVTVFJPWVBCVUZGRVJQUk9DIGRlc3Ryb3lQYnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgUEZOR0xYTUFLRUNVUlJFTlRQUk9DIG1ha2VDdXJyZW50LAorICAg
ICAgICAgICAgICAgICAgICAgUEZOR0xYREVTVFJPWUNPTlRFWFRQUk9DIGRlc3Ryb3lDb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgUEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DIGdldEN1
cnJlbnRDb250ZXh0KQorICAgICAgICAgICAgOiBtX2xpYkdMKGxpYkdMKQorICAgICAgICAgICAg
LCBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICAgICAgICAgICwgbV9nbFhDaG9vc2VGQkNvbmZpZyhj
aG9vc2VGQkNvbmZpZykKKyAgICAgICAgICAgICwgbV9nbFhDcmVhdGVOZXdDb250ZXh0KGNyZWF0
ZU5ld0NvbnRleHQpCisgICAgICAgICAgICAsIG1fZ2xYQ3JlYXRlUGJ1ZmZlcihjcmVhdGVQYnVm
ZmVyKQorICAgICAgICAgICAgLCBtX2dsWERlc3Ryb3lQYnVmZmVyKGRlc3Ryb3lQYnVmZmVyKQor
ICAgICAgICAgICAgLCBtX2dsWE1ha2VDdXJyZW50KG1ha2VDdXJyZW50KQorICAgICAgICAgICAg
LCBtX2dsWERlc3Ryb3lDb250ZXh0KGRlc3Ryb3lDb250ZXh0KQorICAgICAgICAgICAgLCBtX2ds
WEdldEN1cnJlbnRDb250ZXh0KGdldEN1cnJlbnRDb250ZXh0KQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgdm9pZCogdHJ5TG9hZChjb25zdCBjaGFyKiBsaWJOYW1lKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSB1c2UgUlRMRF9HTE9CQUwgc2VtYW50aWNzIHNv
IHRoYXQgR0xFVyBpbml0aWFsaXphdGlvbiB3b3JrczsKKyAgICAgICAgICAgIC8vIEdMRVcgZXhw
ZWN0cyB0byBiZSBhYmxlIHRvIG9wZW4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGhhbmRsZQorICAg
ICAgICAgICAgLy8gYW5kIGRvIGRsc3ltJ3Mgb2YgR0wgZW50cnkgcG9pbnRzIGZyb20gdGhlcmUu
CisgICAgICAgICAgICByZXR1cm4gZGxvcGVuKGxpYk5hbWUsIFJUTERfTEFaWSB8IFJUTERfR0xP
QkFMKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzdGF0aWMgR0xDb25uZWN0aW9uKiBzX2ds
OwogI2Vsc2UKICAgICAjZXJyb3IgTXVzdCBwb3J0IEdyYXBoaWNzQ29udGV4dDNEIHRvIHlvdXIg
cGxhdGZvcm0KICNlbmRpZgogfTsKIAorYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpz
X2luaXRpYWxpemVkR0xFVyA9IGZhbHNlOworI2lmIFBMQVRGT1JNKExJTlVYKQorR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uKiBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpzX2dsID0gMDsKKyNlbmRpZgorCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5l
Y3Rpb24qIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6Y3JlYXRlKCkK
K3sKKyAgICBEaXNwbGF5KiBkcHkgPSBYT3BlbkRpc3BsYXkoMCk7CisgICAgaWYgKCFkcHkpIHsK
KyAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZXJyb3Igb3BlbmluZyBYIGRpc3Bs
YXlcbiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2b2lkKiBsaWJHTCA9IDA7
CisgICAgY29uc3QgY2hhciogbGliTmFtZXNbXSA9IHsKKyAgICAgICAgIi91c3IvbGliL2xpYkdM
LnNvLjEiLAorICAgICAgICAiL3Vzci9saWIzMi9saWJHTC5zby4xIiwKKyAgICAgICAgIi91c3Iv
bGliNjQvbGliR0wuc28uMSIsCisgICAgfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVv
ZihsaWJOYW1lcykgLyBzaXplb2YoY29uc3QgY2hhciopOyBpKyspIHsKKyAgICAgICAgbGliR0wg
PSB0cnlMb2FkKGxpYk5hbWVzW2ldKTsKKyAgICAgICAgaWYgKGxpYkdMKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGlmICghbGliR0wpIHsKKyAgICAgICAgcHJpbnRmKCJHcmFwaGlj
c0NvbnRleHQzRDogZXJyb3Igb3BlbmluZyBsaWJHTC5zby4xXG4iKTsKKyAgICAgICAgcHJpbnRm
KCJHcmFwaGljc0NvbnRleHQzRDogdHJpZWQ6XG4iKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplb2YobGliTmFtZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsgaSsrKQorICAgICAg
ICAgICAgcHJpbnRmKCIgJXNcbiIsIGxpYk5hbWVzW2ldKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCisgICAgUEZOR0xYQ0hPT1NFRkJDT05GSUdQUk9DIGNob29zZUZCQ29uZmlnID0gKFBG
TkdMWENIT09TRUZCQ09ORklHUFJPQykgZGxzeW0obGliR0wsICJnbFhDaG9vc2VGQkNvbmZpZyIp
OworICAgIFBGTkdMWENSRUFURU5FV0NPTlRFWFRQUk9DIGNyZWF0ZU5ld0NvbnRleHQgPSAoUEZO
R0xYQ1JFQVRFTkVXQ09OVEVYVFBST0MpIGRsc3ltKGxpYkdMLCAiZ2xYQ3JlYXRlTmV3Q29udGV4
dCIpOworICAgIFBGTkdMWENSRUFURVBCVUZGRVJQUk9DIGNyZWF0ZVBidWZmZXIgPSAoUEZOR0xY
Q1JFQVRFUEJVRkZFUlBST0MpIGRsc3ltKGxpYkdMLCAiZ2xYQ3JlYXRlUGJ1ZmZlciIpOworICAg
IFBGTkdMWERFU1RST1lQQlVGRkVSUFJPQyBkZXN0cm95UGJ1ZmZlciA9IChQRk5HTFhERVNUUk9Z
UEJVRkZFUlBST0MpIGRsc3ltKGxpYkdMLCAiZ2xYRGVzdHJveVBidWZmZXIiKTsKKyAgICBQRk5H
TFhNQUtFQ1VSUkVOVFBST0MgbWFrZUN1cnJlbnQgPSAoUEZOR0xYTUFLRUNVUlJFTlRQUk9DKSBk
bHN5bShsaWJHTCwgImdsWE1ha2VDdXJyZW50Iik7CisgICAgUEZOR0xYREVTVFJPWUNPTlRFWFRQ
Uk9DIGRlc3Ryb3lDb250ZXh0ID0gKFBGTkdMWERFU1RST1lDT05URVhUUFJPQykgZGxzeW0obGli
R0wsICJnbFhEZXN0cm95Q29udGV4dCIpOworICAgIFBGTkdMWEdFVENVUlJFTlRDT05URVhUUFJP
QyBnZXRDdXJyZW50Q29udGV4dCA9IChQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MpIGRsc3lt
KGxpYkdMLCAiZ2xYR2V0Q3VycmVudENvbnRleHQiKTsKKyAgICBpZiAoIWNob29zZUZCQ29uZmln
IHx8ICFjcmVhdGVOZXdDb250ZXh0IHx8ICFjcmVhdGVQYnVmZmVyCisgICAgICAgIHx8ICFkZXN0
cm95UGJ1ZmZlciB8fCAhbWFrZUN1cnJlbnQgfHwgIWRlc3Ryb3lDb250ZXh0CisgICAgICAgIHx8
ICFnZXRDdXJyZW50Q29udGV4dCkgeworICAgICAgICBYQ2xvc2VEaXNwbGF5KGRweSk7CisgICAg
ICAgIGRsY2xvc2UobGliR0wpOworICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBl
cnJvciBsb29raW5nIHVwIGJvb3RzdHJhcHBpbmcgZW50cnkgcG9pbnRzXG4iKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBuZXcgR0xDb25uZWN0aW9uKGRweSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaWJHTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaG9vc2VGQkNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdD
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveVBidWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWFrZUN1cnJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dHJveUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q3VycmVudENvbnRl
eHQpOworfQorCitHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rpb246On5HTENv
bm5lY3Rpb24oKQoreworICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKKyAgICBkbGNsb3Nl
KG1fbGliR0wpOworfQorCiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpWZXJ0ZXhBdHRyaWJQ
b2ludGVyU3RhdGU6OlZlcnRleEF0dHJpYlBvaW50ZXJTdGF0ZSgpCiAgICAgOiBlbmFibGVkKGZh
bHNlKQogICAgICwgYnVmZmVyKDApCkBAIC0yMjQsMTYgKzM2NSw2IEBAIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OlZlcnRleEF0dHJpYlAKIHsKIH0KIAotI2lmIFBMQVRGT1JNKExJTlVYKQot
c3RhdGljIHZvaWQqIHRyeUxvYWQoY29uc3QgY2hhciogbGliTmFtZSkKLXsKLSAgICAvLyBXZSB1
c2UgUlRMRF9HTE9CQUwgc2VtYW50aWNzIHNvIHRoYXQgR0xFVyBpbml0aWFsaXphdGlvbiB3b3Jr
czsKLSAgICAvLyBHTEVXIGV4cGVjdHMgdG8gYmUgYWJsZSB0byBvcGVuIHRoZSBjdXJyZW50IHBy
b2Nlc3MncyBoYW5kbGUKLSAgICAvLyBhbmQgZG8gZGxzeW0ncyBvZiBHTCBlbnRyeSBwb2ludHMg
ZnJvbSB0aGVyZS4KLSAgICByZXR1cm4gZGxvcGVuKGxpYk5hbWUsIFJUTERfTEFaWSB8IFJUTERf
R0xPQkFMKTsKLX0KLSNlbmRpZgotCiBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRleHQzREludGVybmFsKCkKICAgICA6IG1fdGV4dHVyZSgwKQogICAgICwgbV9mYm8oMCkK
QEAgLTI1NSwxNiArMzg2LDggQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3ND
b250ZQogICAgICwgbV9jb250ZXh0T2JqKDApCiAgICAgLCBtX3JlbmRlck91dHB1dCgwKQogI2Vs
aWYgUExBVEZPUk0oTElOVVgpCi0gICAgLCBtX2Rpc3BsYXkoMCkKICAgICAsIG1fY29udGV4dE9i
aigwKQogICAgICwgbV9wYnVmZmVyKDApCi0gICAgLCBtX2dsWENob29zZUZCQ29uZmlnKDApCi0g
ICAgLCBtX2dsWENyZWF0ZU5ld0NvbnRleHQoMCkKLSAgICAsIG1fZ2xYQ3JlYXRlUGJ1ZmZlcigw
KQotICAgICwgbV9nbFhEZXN0cm95UGJ1ZmZlcigwKQotICAgICwgbV9nbFhNYWtlQ3VycmVudCgw
KQotICAgICwgbV9nbFhEZXN0cm95Q29udGV4dCgwKQotICAgICwgbV9nbFhHZXRDdXJyZW50Q29u
dGV4dCgwKQogI2Vsc2UKICNlcnJvciBNdXN0IHBvcnQgdG8geW91ciBwbGF0Zm9ybQogI2VuZGlm
CkBAIC0zODIsNDIgKzUwNSwxMiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGlj
c0NvbnRlCiAgICAgbV9wYnVmZmVyID0gcGJ1ZmZlcjsKICAgICBtX2NvbnRleHRPYmogPSBjb250
ZXh0OwogI2VsaWYgUExBVEZPUk0oTElOVVgpCi0gICAgbV9kaXNwbGF5ID0gWE9wZW5EaXNwbGF5
KDApOwotICAgIGlmICghbV9kaXNwbGF5KSB7Ci0gICAgICAgIHByaW50ZigiR3JhcGhpY3NDb250
ZXh0M0Q6IGVycm9yIG9wZW5pbmcgWCBkaXNwbGF5XG4iKTsKLSAgICAgICAgcmV0dXJuOworICAg
IGlmICghc19nbCkgeworICAgICAgICBzX2dsID0gR0xDb25uZWN0aW9uOjpjcmVhdGUoKTsKKyAg
ICAgICAgaWYgKCFzX2dsKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0
IGNoYXIqIGxpYk5hbWVzW10gPSB7Ci0gICAgICAgICIvdXNyL2xpYi9saWJHTC5zby4xIiwKLSAg
ICAgICAgIi91c3IvbGliMzIvbGliR0wuc28uMSIsCi0gICAgICAgICIvdXNyL2xpYjY0L2xpYkdM
LnNvLjEiLAotICAgIH07Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YobGliTmFtZXMp
IC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsgaSsrKSB7Ci0gICAgICAgIG1fbGliR0wgPSB0cnlMb2Fk
KGxpYk5hbWVzW2ldKTsKLSAgICAgICAgaWYgKG1fbGliR0wpCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgaWYgKCFtX2xpYkdMKSB7Ci0gICAgICAgIHByaW50ZigiR3JhcGhpY3NDb250
ZXh0M0Q6IGVycm9yIG9wZW5pbmcgbGliR0wuc28uMVxuIik7Ci0gICAgICAgIHByaW50ZigiR3Jh
cGhpY3NDb250ZXh0M0Q6IHRyaWVkOiIpOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emVvZihsaWJOYW1lcykgLyBzaXplb2YoY29uc3QgY2hhciopOyBpKyspCi0gICAgICAgICAgICBw
cmludGYoIiAlcyIsIGxpYk5hbWVzW2ldKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBt
X2dsWENob29zZUZCQ29uZmlnID0gKFBGTkdMWENIT09TRUZCQ09ORklHUFJPQykgZGxzeW0obV9s
aWJHTCwgImdsWENob29zZUZCQ29uZmlnIik7Ci0gICAgbV9nbFhDcmVhdGVOZXdDb250ZXh0ID0g
KFBGTkdMWENSRUFURU5FV0NPTlRFWFRQUk9DKSBkbHN5bShtX2xpYkdMLCAiZ2xYQ3JlYXRlTmV3
Q29udGV4dCIpOwotICAgIG1fZ2xYQ3JlYXRlUGJ1ZmZlciA9IChQRk5HTFhDUkVBVEVQQlVGRkVS
UFJPQykgZGxzeW0obV9saWJHTCwgImdsWENyZWF0ZVBidWZmZXIiKTsKLSAgICBtX2dsWERlc3Ry
b3lQYnVmZmVyID0gKFBGTkdMWERFU1RST1lQQlVGRkVSUFJPQykgZGxzeW0obV9saWJHTCwgImds
WERlc3Ryb3lQYnVmZmVyIik7Ci0gICAgbV9nbFhNYWtlQ3VycmVudCA9IChQRk5HTFhNQUtFQ1VS
UkVOVFBST0MpIGRsc3ltKG1fbGliR0wsICJnbFhNYWtlQ3VycmVudCIpOwotICAgIG1fZ2xYRGVz
dHJveUNvbnRleHQgPSAoUEZOR0xYREVTVFJPWUNPTlRFWFRQUk9DKSBkbHN5bShtX2xpYkdMLCAi
Z2xYRGVzdHJveUNvbnRleHQiKTsKLSAgICBtX2dsWEdldEN1cnJlbnRDb250ZXh0ID0gKFBGTkdM
WEdFVENVUlJFTlRDT05URVhUUFJPQykgZGxzeW0obV9saWJHTCwgImdsWEdldEN1cnJlbnRDb250
ZXh0Iik7Ci0gICAgaWYgKCFtX2dsWENob29zZUZCQ29uZmlnIHx8ICFtX2dsWENyZWF0ZU5ld0Nv
bnRleHQgfHwgIW1fZ2xYQ3JlYXRlUGJ1ZmZlcgotICAgICAgICB8fCAhbV9nbFhEZXN0cm95UGJ1
ZmZlciB8fCAhbV9nbFhNYWtlQ3VycmVudCB8fCAhbV9nbFhEZXN0cm95Q29udGV4dAotICAgICAg
ICB8fCAhbV9nbFhHZXRDdXJyZW50Q29udGV4dCkgewotICAgICAgICBwcmludGYoIkdyYXBoaWNz
Q29udGV4dDNEOiBlcnJvciBsb29raW5nIHVwIGJvb3RzdHJhcHBpbmcgZW50cnkgcG9pbnRzXG4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpbnQgY29uZmlnQXR0cnNbXSA9IHsKICAg
ICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsCiAgICAgICAgIEdMWF9QQlVGRkVSX0JJVCwKQEAgLTQy
OCw3ICs1MjEsNyBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRlCiAg
ICAgICAgIDAKICAgICB9OwogICAgIGludCBuZWxlbWVudHMgPSAwOwotICAgIEdMWEZCQ29uZmln
KiBjb25maWcgPSBtX2dsWENob29zZUZCQ29uZmlnKG1fZGlzcGxheSwgMCwgY29uZmlnQXR0cnMs
ICZuZWxlbWVudHMpOworICAgIEdMWEZCQ29uZmlnKiBjb25maWcgPSBzX2dsLT5jaG9vc2VGQkNv
bmZpZygwLCBjb25maWdBdHRycywgJm5lbGVtZW50cyk7CiAgICAgaWYgKCFjb25maWcpIHsKICAg
ICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZ2xYQ2hvb3NlRkJDb25maWcgZmFpbGVk
XG4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM4LDcgKzUzMSw3IEBAIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICAgICAgICAgWEZyZWUoY29uZmlnKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBHTFhDb250ZXh0IGNvbnRleHQgPSBtX2dsWENyZWF0ZU5l
d0NvbnRleHQobV9kaXNwbGF5LCBjb25maWdbMF0sIEdMWF9SR0JBX1RZUEUsIDAsIFRydWUpOwor
ICAgIEdMWENvbnRleHQgY29udGV4dCA9IHNfZ2wtPmNyZWF0ZU5ld0NvbnRleHQoY29uZmlnWzBd
LCBHTFhfUkdCQV9UWVBFLCAwLCBUcnVlKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAg
cHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZ2xYQ3JlYXRlTmV3Q29udGV4dCBmYWlsZWRcbiIp
OwogICAgICAgICBYRnJlZShjb25maWcpOwpAQCAtNDUxLDEzICs1NDQsMTMgQEAgR3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgICAgICAxLAogICAgICAgICAwCiAg
ICAgfTsKLSAgICBHTFhQYnVmZmVyIHBidWZmZXIgPSBtX2dsWENyZWF0ZVBidWZmZXIobV9kaXNw
bGF5LCBjb25maWdbMF0sIHBidWZmZXJBdHRycyk7CisgICAgR0xYUGJ1ZmZlciBwYnVmZmVyID0g
c19nbC0+Y3JlYXRlUGJ1ZmZlcihjb25maWdbMF0sIHBidWZmZXJBdHRycyk7CiAgICAgWEZyZWUo
Y29uZmlnKTsKICAgICBpZiAoIXBidWZmZXIpIHsKICAgICAgICAgcHJpbnRmKCJHcmFwaGljc0Nv
bnRleHQzRDogZ2x4Q3JlYXRlUGJ1ZmZlciBmYWlsZWRcbiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICghbV9nbFhNYWtlQ3VycmVudChtX2Rpc3BsYXksIHBidWZmZXIsIGNvbnRl
eHQpKSB7CisgICAgaWYgKCFzX2dsLT5tYWtlQ3VycmVudChwYnVmZmVyLCBjb250ZXh0KSkgewog
ICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBnbFhNYWtlQ3VycmVudCBmYWlsZWRc
biIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3LDggKzU2MCw3IEBAIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICNlcnJvciBNdXN0IHBvcnQgdG8geW91
ciBwbGF0Zm9ybQogI2VuZGlmCiAKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZEdMRVcgPSBm
YWxzZTsKLSAgICBpZiAoIWluaXRpYWxpemVkR0xFVykgeworICAgIGlmICghc19pbml0aWFsaXpl
ZEdMRVcpIHsKICAgICAgICAgLy8gSW5pdGlhbGl6ZSBHTEVXIGFuZCBjaGVjayBmb3IgR0wgMi4w
IHN1cHBvcnQgYnkgdGhlIGRyaXZlcnMuCiAgICAgICAgIEdMZW51bSBnbGV3SW5pdFJlc3VsdCA9
IGdsZXdJbml0KCk7CiAgICAgICAgIGlmIChnbGV3SW5pdFJlc3VsdCAhPSBHTEVXX09LKSB7CkBA
IC00NzksNyArNTcxLDcgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250
ZQogICAgICAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogT3BlbkdMIDIuMCBub3Qg
c3VwcG9ydGVkXG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBp
bml0aWFsaXplZEdMRVcgPSB0cnVlOworICAgICAgICBzX2luaXRpYWxpemVkR0xFVyA9IHRydWU7
CiAgICAgfQogfQogCkBAIC01MTEsMTEgKzYwMyw5IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6On5HcmFwaGljc0NvbnQKICAgICBpZiAobV9yZW5kZXJPdXRwdXQpCiAgICAgICAgIGRlbGV0
ZVtdIG1fcmVuZGVyT3V0cHV0OwogI2VsaWYgUExBVEZPUk0oTElOVVgpCi0gICAgbV9nbFhNYWtl
Q3VycmVudChtX2Rpc3BsYXksIDAsIDApOwotICAgIG1fZ2xYRGVzdHJveUNvbnRleHQobV9kaXNw
bGF5LCBtX2NvbnRleHRPYmopOwotICAgIG1fZ2xYRGVzdHJveVBidWZmZXIobV9kaXNwbGF5LCBt
X3BidWZmZXIpOwotICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKLSAgICBkbGNsb3NlKG1f
bGliR0wpOworICAgIHNfZ2wtPm1ha2VDdXJyZW50KDAsIDApOworICAgIHNfZ2wtPmRlc3Ryb3lD
b250ZXh0KG1fY29udGV4dE9iaik7CisgICAgc19nbC0+ZGVzdHJveVBidWZmZXIobV9wYnVmZmVy
KTsKICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgpAQCAt
NTMzLDggKzYyMyw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6bWFrZUNvbnQK
ICAgICAgICAgaWYgKENHTFNldEN1cnJlbnRDb250ZXh0KG1fY29udGV4dE9iaikgPT0ga0NHTE5v
RXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbGlmIFBMQVRGT1JNKExJTlVYKQot
ICAgIGlmIChtX2dsWEdldEN1cnJlbnRDb250ZXh0KCkgIT0gbV9jb250ZXh0T2JqKQotICAgICAg
ICBpZiAobV9nbFhNYWtlQ3VycmVudChtX2Rpc3BsYXksIG1fcGJ1ZmZlciwgbV9jb250ZXh0T2Jq
KSkKKyAgICBpZiAoc19nbC0+Z2V0Q3VycmVudENvbnRleHQoKSAhPSBtX2NvbnRleHRPYmopCisg
ICAgICAgIGlmIChzX2dsLT5tYWtlQ3VycmVudChtX3BidWZmZXIsIG1fY29udGV4dE9iaikpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIg
cGxhdGZvcm0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45405</attachid>
            <date>2009-12-22 14:30:50 -0800</date>
            <delta_ts>2009-12-22 15:00:27 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>crash.patch</filename>
            <type>text/plain</type>
            <size>15616</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTI1MDApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDktMTItMjIgIEtlbm5l
dGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gV2ViR0wgY3Jhc2hlcyBpbnRlcm1pdHRl
bnRseSBvbiBMaW51eAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzI4NDUKKyAgICAgICAgCisgICAgICAgIFRoZSBkbGNsb3NlJ2luZyBvZiBsaWJHTC5z
by4xIGFuZCBkbG9wZW4naW5nIG9mIGl0IGVhY2ggdGltZSBhCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEIHdhcyBjcmVhdGVkIHdhcyBvY2Nhc2lvbmFsbHkgY2F1c2luZyBpdCB0byBiZQorICAg
ICAgICByZS1tYXBwZWQgYXQgYSBkaWZmZXJlbnQgYmFzZSBhZGRyZXNzLiBTaW5jZSBHTEVXIGlz
IG5vdAorICAgICAgICByZS1pbml0aWFsaXplZCBldmVyeSB0aW1lLCBwcmltYXJpbHkgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMsIGl0cworICAgICAgICBjYWNoZWQgZnVuY3Rpb24gcG9pbnRlcnMg
d2VyZSBwb2ludGluZyB0byBnYXJiYWdlLiBTdG9wcGVkIGNsb3NpbmcKKyAgICAgICAgYW5kIHJl
LW9wZW5pbmcgbGliR0wuc28uMSBlYWNoIHRpbWU7IG5vdyBpdCBpcyBsb2FkZWQgbGF6aWx5LCB3
aGVuCisgICAgICAgIHRoZSBmaXJzdCAzRCBjb250ZXh0IGlzIGNyZWF0ZWQuIEFsc28gcmV1c2Vk
IHRoZSBYIGRpc3BsYXkKKyAgICAgICAgY29ubmVjdGlvbiBzaW5jZSB0aGUgR0xYIHJvdXRpbmVz
JyBjb3JyZWN0bmVzcyBtaWdodCBoaW5nZSB1cG9uIGl0CisgICAgICAgIG5vdCByZXN1bHRpbmcg
aW4gYSBjaGFuZ2Ugb2YgR0wgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBzcmMvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6R0xDb25uZWN0aW9uOjpjaG9vc2VGQkNvbmZpZyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rpb246OmNyZWF0ZU5ld0NvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0
aW9uOjpjcmVhdGVQYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6ZGVzdHJveVBidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uOjptYWtlQ3VycmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rp
b246OmRlc3Ryb3lDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6Z2V0Q3VycmVudENvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uOjpHTENvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25u
ZWN0aW9uOjp0cnlMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdMQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OkdMQ29ubmVjdGlvbjo6fkdMQ29ubmVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6On5H
cmFwaGljc0NvbnRleHQzREludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6Om1ha2VDb250ZXh0Q3VycmVudCk6CisKIDIwMDktMTItMjIgIFlhYXIg
U2Nobml0bWFuICA8eWFhckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5j
cHAJKHJldmlzaW9uIDUyNDY4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw2ICsxODEsNyBAQCBwcml2YXRlOgogICAg
IFNrQml0bWFwKiBtX3Jlc2l6aW5nQml0bWFwOwogI2VuZGlmCiAKKyAgICBzdGF0aWMgYm9vbCBz
X2luaXRpYWxpemVkR0xFVzsKICNpZiBQTEFURk9STShXSU5fT1MpCiAgICAgSFdORCAgbV9jYW52
YXNXaW5kb3c7CiAgICAgSERDICAgbV9jYW52YXNEQzsKQEAgLTE5MCwyOCArMTkxLDE2NyBAQCBw
cml2YXRlOgogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0T2JqOwogICAgIHVuc2lnbmVkIGNo
YXIqIG1fcmVuZGVyT3V0cHV0OwogI2VsaWYgUExBVEZPUk0oTElOVVgpCi0gICAgRGlzcGxheSog
bV9kaXNwbGF5OwogICAgIEdMWENvbnRleHQgbV9jb250ZXh0T2JqOwogICAgIEdMWFBidWZmZXIg
bV9wYnVmZmVyOworCiAgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgcHJvYmxlbXMgY2F1c2VkIGJ5
IGxpbmtpbmcgYWdhaW5zdCBsaWJHTCwgd2UKICAgICAvLyBkeW5hbWljYWxseSBsb29rIHVwIGFs
bCB0aGUgc3ltYm9scyB3ZSBuZWVkLgogICAgIC8vIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9j
aHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTE2ODAwCi0gICAgdm9pZCogbV9saWJHTDsKLSAgICBQ
Rk5HTFhDSE9PU0VGQkNPTkZJR1BST0MgbV9nbFhDaG9vc2VGQkNvbmZpZzsKLSAgICBQRk5HTFhD
UkVBVEVORVdDT05URVhUUFJPQyBtX2dsWENyZWF0ZU5ld0NvbnRleHQ7Ci0gICAgUEZOR0xYQ1JF
QVRFUEJVRkZFUlBST0MgbV9nbFhDcmVhdGVQYnVmZmVyOwotICAgIFBGTkdMWERFU1RST1lQQlVG
RkVSUFJPQyBtX2dsWERlc3Ryb3lQYnVmZmVyOwotICAgIHR5cGVkZWYgQm9vbCAoKiBQRk5HTFhN
QUtFQ1VSUkVOVFBST0MpKERpc3BsYXkqIGRweSwgR0xYRHJhd2FibGUgZHJhd2FibGUsIEdMWENv
bnRleHQgY3R4KTsKLSAgICBQRk5HTFhNQUtFQ1VSUkVOVFBST0MgbV9nbFhNYWtlQ3VycmVudDsK
LSAgICB0eXBlZGVmIHZvaWQgKCogUEZOR0xYREVTVFJPWUNPTlRFWFRQUk9DKShEaXNwbGF5KiBk
cHksIEdMWENvbnRleHQgY3R4KTsKLSAgICBQRk5HTFhERVNUUk9ZQ09OVEVYVFBST0MgbV9nbFhE
ZXN0cm95Q29udGV4dDsKLSAgICB0eXBlZGVmIEdMWENvbnRleHQgKCogUEZOR0xYR0VUQ1VSUkVO
VENPTlRFWFRQUk9DKSh2b2lkKTsKLSAgICBQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MgbV9n
bFhHZXRDdXJyZW50Q29udGV4dDsKKyAgICBjbGFzcyBHTENvbm5lY3Rpb24geworICAgICAgcHVi
bGljOgorICAgICAgICB+R0xDb25uZWN0aW9uKCk7CisKKyAgICAgICAgc3RhdGljIEdMQ29ubmVj
dGlvbiogY3JlYXRlKCk7CisKKyAgICAgICAgR0xYRkJDb25maWcqIGNob29zZUZCQ29uZmlnKGlu
dCBzY3JlZW4sIGNvbnN0IGludCAqYXR0cmliX2xpc3QsIGludCAqbmVsZW1lbnRzKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9nbFhDaG9vc2VGQkNvbmZpZyhtX2Rpc3BsYXksIHNj
cmVlbiwgYXR0cmliX2xpc3QsIG5lbGVtZW50cyk7CisgICAgICAgIH0KKworICAgICAgICBHTFhD
b250ZXh0IGNyZWF0ZU5ld0NvbnRleHQoR0xYRkJDb25maWcgY29uZmlnLCBpbnQgcmVuZGVyVHlw
ZSwgR0xYQ29udGV4dCBzaGFyZUxpc3QsIEJvb2wgZGlyZWN0KQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9nbFhDcmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCByZW5k
ZXJUeXBlLCBzaGFyZUxpc3QsIGRpcmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBHTFhQYnVm
ZmVyIGNyZWF0ZVBidWZmZXIoR0xYRkJDb25maWcgY29uZmlnLCBjb25zdCBpbnQgKmF0dHJpYkxp
c3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2dsWENyZWF0ZVBidWZmZXIobV9k
aXNwbGF5LCBjb25maWcsIGF0dHJpYkxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBk
ZXN0cm95UGJ1ZmZlcihHTFhQYnVmZmVyIHBidWYpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
Z2xYRGVzdHJveVBidWZmZXIobV9kaXNwbGF5LCBwYnVmKTsKKyAgICAgICAgfQorCisgICAgICAg
IEJvb2wgbWFrZUN1cnJlbnQoR0xYRHJhd2FibGUgZHJhd2FibGUsIEdMWENvbnRleHQgY3R4KQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9nbFhNYWtlQ3VycmVudChtX2Rpc3BsYXks
IGRyYXdhYmxlLCBjdHgpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkZXN0cm95Q29udGV4
dChHTFhDb250ZXh0IGN0eCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9nbFhEZXN0cm95Q29u
dGV4dChtX2Rpc3BsYXksIGN0eCk7CisgICAgICAgIH0KKworICAgICAgICBHTFhDb250ZXh0IGdl
dEN1cnJlbnRDb250ZXh0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZ2xYR2V0
Q3VycmVudENvbnRleHQoKTsKKyAgICAgICAgfQorCisgICAgICBwcml2YXRlOgorICAgICAgICBE
aXNwbGF5KiBtX2Rpc3BsYXk7CisgICAgICAgIHZvaWQqIG1fbGliR0w7CisgICAgICAgIFBGTkdM
WENIT09TRUZCQ09ORklHUFJPQyBtX2dsWENob29zZUZCQ29uZmlnOworICAgICAgICBQRk5HTFhD
UkVBVEVORVdDT05URVhUUFJPQyBtX2dsWENyZWF0ZU5ld0NvbnRleHQ7CisgICAgICAgIFBGTkdM
WENSRUFURVBCVUZGRVJQUk9DIG1fZ2xYQ3JlYXRlUGJ1ZmZlcjsKKyAgICAgICAgUEZOR0xYREVT
VFJPWVBCVUZGRVJQUk9DIG1fZ2xYRGVzdHJveVBidWZmZXI7CisgICAgICAgIHR5cGVkZWYgQm9v
bCAoKiBQRk5HTFhNQUtFQ1VSUkVOVFBST0MpKERpc3BsYXkqIGRweSwgR0xYRHJhd2FibGUgZHJh
d2FibGUsIEdMWENvbnRleHQgY3R4KTsKKyAgICAgICAgUEZOR0xYTUFLRUNVUlJFTlRQUk9DIG1f
Z2xYTWFrZUN1cnJlbnQ7CisgICAgICAgIHR5cGVkZWYgdm9pZCAoKiBQRk5HTFhERVNUUk9ZQ09O
VEVYVFBST0MpKERpc3BsYXkqIGRweSwgR0xYQ29udGV4dCBjdHgpOworICAgICAgICBQRk5HTFhE
RVNUUk9ZQ09OVEVYVFBST0MgbV9nbFhEZXN0cm95Q29udGV4dDsKKyAgICAgICAgdHlwZWRlZiBH
TFhDb250ZXh0ICgqIFBGTkdMWEdFVENVUlJFTlRDT05URVhUUFJPQykodm9pZCk7CisgICAgICAg
IFBGTkdMWEdFVENVUlJFTlRDT05URVhUUFJPQyBtX2dsWEdldEN1cnJlbnRDb250ZXh0OworCisg
ICAgICAgIEdMQ29ubmVjdGlvbihEaXNwbGF5KiBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAg
ICAgdm9pZCogbGliR0wsCisgICAgICAgICAgICAgICAgICAgICBQRk5HTFhDSE9PU0VGQkNPTkZJ
R1BST0MgY2hvb3NlRkJDb25maWcsCisgICAgICAgICAgICAgICAgICAgICBQRk5HTFhDUkVBVEVO
RVdDT05URVhUUFJPQyBjcmVhdGVOZXdDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgUEZO
R0xYQ1JFQVRFUEJVRkZFUlBST0MgY3JlYXRlUGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
IFBGTkdMWERFU1RST1lQQlVGRkVSUFJPQyBkZXN0cm95UGJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgIFBGTkdMWE1BS0VDVVJSRU5UUFJPQyBtYWtlQ3VycmVudCwKKyAgICAgICAgICAgICAg
ICAgICAgIFBGTkdMWERFU1RST1lDT05URVhUUFJPQyBkZXN0cm95Q29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgIFBGTkdMWEdFVENVUlJFTlRDT05URVhUUFJPQyBnZXRDdXJyZW50Q29udGV4
dCkKKyAgICAgICAgICAgIDogbV9saWJHTChsaWJHTCkKKyAgICAgICAgICAgICwgbV9kaXNwbGF5
KGRpc3BsYXkpCisgICAgICAgICAgICAsIG1fZ2xYQ2hvb3NlRkJDb25maWcoY2hvb3NlRkJDb25m
aWcpCisgICAgICAgICAgICAsIG1fZ2xYQ3JlYXRlTmV3Q29udGV4dChjcmVhdGVOZXdDb250ZXh0
KQorICAgICAgICAgICAgLCBtX2dsWENyZWF0ZVBidWZmZXIoY3JlYXRlUGJ1ZmZlcikKKyAgICAg
ICAgICAgICwgbV9nbFhEZXN0cm95UGJ1ZmZlcihkZXN0cm95UGJ1ZmZlcikKKyAgICAgICAgICAg
ICwgbV9nbFhNYWtlQ3VycmVudChtYWtlQ3VycmVudCkKKyAgICAgICAgICAgICwgbV9nbFhEZXN0
cm95Q29udGV4dChkZXN0cm95Q29udGV4dCkKKyAgICAgICAgICAgICwgbV9nbFhHZXRDdXJyZW50
Q29udGV4dChnZXRDdXJyZW50Q29udGV4dCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgc3RhdGljIHZvaWQqIHRyeUxvYWQoY29uc3QgY2hhciogbGliTmFtZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gV2UgdXNlIFJUTERfR0xPQkFMIHNlbWFudGljcyBzbyB0aGF0IEdMRVcg
aW5pdGlhbGl6YXRpb24gd29ya3M7CisgICAgICAgICAgICAvLyBHTEVXIGV4cGVjdHMgdG8gYmUg
YWJsZSB0byBvcGVuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBoYW5kbGUKKyAgICAgICAgICAgIC8v
IGFuZCBkbyBkbHN5bSdzIG9mIEdMIGVudHJ5IHBvaW50cyBmcm9tIHRoZXJlLgorICAgICAgICAg
ICAgcmV0dXJuIGRsb3BlbihsaWJOYW1lLCBSVExEX0xBWlkgfCBSVExEX0dMT0JBTCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgc3RhdGljIEdMQ29ubmVjdGlvbiogc19nbDsKICNlbHNlCiAg
ICAgI2Vycm9yIE11c3QgcG9ydCBHcmFwaGljc0NvbnRleHQzRCB0byB5b3VyIHBsYXRmb3JtCiAj
ZW5kaWYKIH07CiAKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c19pbml0aWFsaXpl
ZEdMRVcgPSBmYWxzZTsKKyNpZiBQTEFURk9STShMSU5VWCkKK0dyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdMQ29ubmVjdGlvbiogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6c19nbCA9IDA7
CisjZW5kaWYKKworR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uKiBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpHTENvbm5lY3Rpb246OmNyZWF0ZSgpCit7CisgICAgRGlz
cGxheSogZHB5ID0gWE9wZW5EaXNwbGF5KDApOworICAgIGlmICghZHB5KSB7CisgICAgICAgIHBy
aW50ZigiR3JhcGhpY3NDb250ZXh0M0Q6IGVycm9yIG9wZW5pbmcgWCBkaXNwbGF5XG4iKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdm9pZCogbGliR0wgPSAwOworICAgIGNvbnN0
IGNoYXIqIGxpYk5hbWVzW10gPSB7CisgICAgICAgICIvdXNyL2xpYi9saWJHTC5zby4xIiwKKyAg
ICAgICAgIi91c3IvbGliMzIvbGliR0wuc28uMSIsCisgICAgICAgICIvdXNyL2xpYjY0L2xpYkdM
LnNvLjEiLAorICAgIH07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YobGliTmFtZXMp
IC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsgaSsrKSB7CisgICAgICAgIGxpYkdMID0gdHJ5TG9hZChs
aWJOYW1lc1tpXSk7CisgICAgICAgIGlmIChsaWJHTCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBpZiAoIWxpYkdMKSB7CisgICAgICAgIHByaW50ZigiR3JhcGhpY3NDb250ZXh0M0Q6
IGVycm9yIG9wZW5pbmcgbGliR0wuc28uMVxuIik7CisgICAgICAgIHByaW50ZigiR3JhcGhpY3ND
b250ZXh0M0Q6IHRyaWVkOlxuIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9m
KGxpYk5hbWVzKSAvIHNpemVvZihjb25zdCBjaGFyKik7IGkrKykKKyAgICAgICAgICAgIHByaW50
ZigiICVzXG4iLCBsaWJOYW1lc1tpXSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAg
IFBGTkdMWENIT09TRUZCQ09ORklHUFJPQyBjaG9vc2VGQkNvbmZpZyA9IChQRk5HTFhDSE9PU0VG
QkNPTkZJR1BST0MpIGRsc3ltKGxpYkdMLCAiZ2xYQ2hvb3NlRkJDb25maWciKTsKKyAgICBQRk5H
TFhDUkVBVEVORVdDT05URVhUUFJPQyBjcmVhdGVOZXdDb250ZXh0ID0gKFBGTkdMWENSRUFURU5F
V0NPTlRFWFRQUk9DKSBkbHN5bShsaWJHTCwgImdsWENyZWF0ZU5ld0NvbnRleHQiKTsKKyAgICBQ
Rk5HTFhDUkVBVEVQQlVGRkVSUFJPQyBjcmVhdGVQYnVmZmVyID0gKFBGTkdMWENSRUFURVBCVUZG
RVJQUk9DKSBkbHN5bShsaWJHTCwgImdsWENyZWF0ZVBidWZmZXIiKTsKKyAgICBQRk5HTFhERVNU
Uk9ZUEJVRkZFUlBST0MgZGVzdHJveVBidWZmZXIgPSAoUEZOR0xYREVTVFJPWVBCVUZGRVJQUk9D
KSBkbHN5bShsaWJHTCwgImdsWERlc3Ryb3lQYnVmZmVyIik7CisgICAgUEZOR0xYTUFLRUNVUlJF
TlRQUk9DIG1ha2VDdXJyZW50ID0gKFBGTkdMWE1BS0VDVVJSRU5UUFJPQykgZGxzeW0obGliR0ws
ICJnbFhNYWtlQ3VycmVudCIpOworICAgIFBGTkdMWERFU1RST1lDT05URVhUUFJPQyBkZXN0cm95
Q29udGV4dCA9IChQRk5HTFhERVNUUk9ZQ09OVEVYVFBST0MpIGRsc3ltKGxpYkdMLCAiZ2xYRGVz
dHJveUNvbnRleHQiKTsKKyAgICBQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MgZ2V0Q3VycmVu
dENvbnRleHQgPSAoUEZOR0xYR0VUQ1VSUkVOVENPTlRFWFRQUk9DKSBkbHN5bShsaWJHTCwgImds
WEdldEN1cnJlbnRDb250ZXh0Iik7CisgICAgaWYgKCFjaG9vc2VGQkNvbmZpZyB8fCAhY3JlYXRl
TmV3Q29udGV4dCB8fCAhY3JlYXRlUGJ1ZmZlcgorICAgICAgICB8fCAhZGVzdHJveVBidWZmZXIg
fHwgIW1ha2VDdXJyZW50IHx8ICFkZXN0cm95Q29udGV4dAorICAgICAgICB8fCAhZ2V0Q3VycmVu
dENvbnRleHQpIHsKKyAgICAgICAgWENsb3NlRGlzcGxheShkcHkpOworICAgICAgICBkbGNsb3Nl
KGxpYkdMKTsKKyAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDogZXJyb3IgbG9va2lu
ZyB1cCBib290c3RyYXBwaW5nIGVudHJ5IHBvaW50c1xuIik7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKyAgICByZXR1cm4gbmV3IEdMQ29ubmVjdGlvbihkcHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGliR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlRkJD
b25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTmV3Q29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQYnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Ryb3lQYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1ha2VDdXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lDb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEN1cnJlbnRDb250ZXh0KTsKK30KKwor
R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R0xDb25uZWN0aW9uOjp+R0xDb25uZWN0aW9uKCkK
K3sKKyAgICBYQ2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7CisgICAgZGxjbG9zZShtX2xpYkdMKTsK
K30KKwogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6VmVydGV4QXR0cmliUG9pbnRlclN0YXRl
OjpWZXJ0ZXhBdHRyaWJQb2ludGVyU3RhdGUoKQogICAgIDogZW5hYmxlZChmYWxzZSkKICAgICAs
IGJ1ZmZlcigwKQpAQCAtMjI0LDE2ICszNjQsNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpWZXJ0ZXhBdHRyaWJQCiB7CiB9CiAKLSNpZiBQTEFURk9STShMSU5VWCkKLXN0YXRpYyB2b2lk
KiB0cnlMb2FkKGNvbnN0IGNoYXIqIGxpYk5hbWUpCi17Ci0gICAgLy8gV2UgdXNlIFJUTERfR0xP
QkFMIHNlbWFudGljcyBzbyB0aGF0IEdMRVcgaW5pdGlhbGl6YXRpb24gd29ya3M7Ci0gICAgLy8g
R0xFVyBleHBlY3RzIHRvIGJlIGFibGUgdG8gb3BlbiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgaGFu
ZGxlCi0gICAgLy8gYW5kIGRvIGRsc3ltJ3Mgb2YgR0wgZW50cnkgcG9pbnRzIGZyb20gdGhlcmUu
Ci0gICAgcmV0dXJuIGRsb3BlbihsaWJOYW1lLCBSVExEX0xBWlkgfCBSVExEX0dMT0JBTCk7Ci19
Ci0jZW5kaWYKLQogR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbCgpCiAgICAgOiBtX3RleHR1cmUoMCkKICAgICAsIG1fZmJvKDApCkBAIC0yNTUsMTYg
KzM4NSw4IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICAgICAs
IG1fY29udGV4dE9iaigwKQogICAgICwgbV9yZW5kZXJPdXRwdXQoMCkKICNlbGlmIFBMQVRGT1JN
KExJTlVYKQotICAgICwgbV9kaXNwbGF5KDApCiAgICAgLCBtX2NvbnRleHRPYmooMCkKICAgICAs
IG1fcGJ1ZmZlcigwKQotICAgICwgbV9nbFhDaG9vc2VGQkNvbmZpZygwKQotICAgICwgbV9nbFhD
cmVhdGVOZXdDb250ZXh0KDApCi0gICAgLCBtX2dsWENyZWF0ZVBidWZmZXIoMCkKLSAgICAsIG1f
Z2xYRGVzdHJveVBidWZmZXIoMCkKLSAgICAsIG1fZ2xYTWFrZUN1cnJlbnQoMCkKLSAgICAsIG1f
Z2xYRGVzdHJveUNvbnRleHQoMCkKLSAgICAsIG1fZ2xYR2V0Q3VycmVudENvbnRleHQoMCkKICNl
bHNlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0KICNlbmRpZgpAQCAtMzgyLDQy
ICs1MDQsMTIgQEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAg
IG1fcGJ1ZmZlciA9IHBidWZmZXI7CiAgICAgbV9jb250ZXh0T2JqID0gY29udGV4dDsKICNlbGlm
IFBMQVRGT1JNKExJTlVYKQotICAgIG1fZGlzcGxheSA9IFhPcGVuRGlzcGxheSgwKTsKLSAgICBp
ZiAoIW1fZGlzcGxheSkgewotICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJv
ciBvcGVuaW5nIFggZGlzcGxheVxuIik7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIXNfZ2wp
IHsKKyAgICAgICAgc19nbCA9IEdMQ29ubmVjdGlvbjo6Y3JlYXRlKCk7CisgICAgICAgIGlmICgh
c19nbCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyKiBsaWJO
YW1lc1tdID0gewotICAgICAgICAiL3Vzci9saWIvbGliR0wuc28uMSIsCi0gICAgICAgICIvdXNy
L2xpYjMyL2xpYkdMLnNvLjEiLAotICAgICAgICAiL3Vzci9saWI2NC9saWJHTC5zby4xIiwKLSAg
ICB9OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKGxpYk5hbWVzKSAvIHNpemVvZihj
b25zdCBjaGFyKik7IGkrKykgewotICAgICAgICBtX2xpYkdMID0gdHJ5TG9hZChsaWJOYW1lc1tp
XSk7Ci0gICAgICAgIGlmIChtX2xpYkdMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGlmICghbV9saWJHTCkgewotICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4dDNEOiBlcnJv
ciBvcGVuaW5nIGxpYkdMLnNvLjFcbiIpOwotICAgICAgICBwcmludGYoIkdyYXBoaWNzQ29udGV4
dDNEOiB0cmllZDoiKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YobGliTmFt
ZXMpIC8gc2l6ZW9mKGNvbnN0IGNoYXIqKTsgaSsrKQotICAgICAgICAgICAgcHJpbnRmKCIgJXMi
LCBsaWJOYW1lc1tpXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9nbFhDaG9vc2VG
QkNvbmZpZyA9IChQRk5HTFhDSE9PU0VGQkNPTkZJR1BST0MpIGRsc3ltKG1fbGliR0wsICJnbFhD
aG9vc2VGQkNvbmZpZyIpOwotICAgIG1fZ2xYQ3JlYXRlTmV3Q29udGV4dCA9IChQRk5HTFhDUkVB
VEVORVdDT05URVhUUFJPQykgZGxzeW0obV9saWJHTCwgImdsWENyZWF0ZU5ld0NvbnRleHQiKTsK
LSAgICBtX2dsWENyZWF0ZVBidWZmZXIgPSAoUEZOR0xYQ1JFQVRFUEJVRkZFUlBST0MpIGRsc3lt
KG1fbGliR0wsICJnbFhDcmVhdGVQYnVmZmVyIik7Ci0gICAgbV9nbFhEZXN0cm95UGJ1ZmZlciA9
IChQRk5HTFhERVNUUk9ZUEJVRkZFUlBST0MpIGRsc3ltKG1fbGliR0wsICJnbFhEZXN0cm95UGJ1
ZmZlciIpOwotICAgIG1fZ2xYTWFrZUN1cnJlbnQgPSAoUEZOR0xYTUFLRUNVUlJFTlRQUk9DKSBk
bHN5bShtX2xpYkdMLCAiZ2xYTWFrZUN1cnJlbnQiKTsKLSAgICBtX2dsWERlc3Ryb3lDb250ZXh0
ID0gKFBGTkdMWERFU1RST1lDT05URVhUUFJPQykgZGxzeW0obV9saWJHTCwgImdsWERlc3Ryb3lD
b250ZXh0Iik7Ci0gICAgbV9nbFhHZXRDdXJyZW50Q29udGV4dCA9IChQRk5HTFhHRVRDVVJSRU5U
Q09OVEVYVFBST0MpIGRsc3ltKG1fbGliR0wsICJnbFhHZXRDdXJyZW50Q29udGV4dCIpOwotICAg
IGlmICghbV9nbFhDaG9vc2VGQkNvbmZpZyB8fCAhbV9nbFhDcmVhdGVOZXdDb250ZXh0IHx8ICFt
X2dsWENyZWF0ZVBidWZmZXIKLSAgICAgICAgfHwgIW1fZ2xYRGVzdHJveVBidWZmZXIgfHwgIW1f
Z2xYTWFrZUN1cnJlbnQgfHwgIW1fZ2xYRGVzdHJveUNvbnRleHQKLSAgICAgICAgfHwgIW1fZ2xY
R2V0Q3VycmVudENvbnRleHQpIHsKLSAgICAgICAgcHJpbnRmKCJHcmFwaGljc0NvbnRleHQzRDog
ZXJyb3IgbG9va2luZyB1cCBib290c3RyYXBwaW5nIGVudHJ5IHBvaW50c1xuIik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgaW50IGNvbmZpZ0F0dHJzW10gPSB7CiAgICAgICAgIEdMWF9E
UkFXQUJMRV9UWVBFLAogICAgICAgICBHTFhfUEJVRkZFUl9CSVQsCkBAIC00MjgsNyArNTIwLDcg
QEAgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZQogICAgICAgICAwCiAg
ICAgfTsKICAgICBpbnQgbmVsZW1lbnRzID0gMDsKLSAgICBHTFhGQkNvbmZpZyogY29uZmlnID0g
bV9nbFhDaG9vc2VGQkNvbmZpZyhtX2Rpc3BsYXksIDAsIGNvbmZpZ0F0dHJzLCAmbmVsZW1lbnRz
KTsKKyAgICBHTFhGQkNvbmZpZyogY29uZmlnID0gc19nbC0+Y2hvb3NlRkJDb25maWcoMCwgY29u
ZmlnQXR0cnMsICZuZWxlbWVudHMpOwogICAgIGlmICghY29uZmlnKSB7CiAgICAgICAgIHByaW50
ZigiR3JhcGhpY3NDb250ZXh0M0Q6IGdsWENob29zZUZCQ29uZmlnIGZhaWxlZFxuIik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTQzOCw3ICs1MzAsNyBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpHcmFwaGljc0NvbnRlCiAgICAgICAgIFhGcmVlKGNvbmZpZyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgR0xYQ29udGV4dCBjb250ZXh0ID0gbV9nbFhDcmVhdGVOZXdDb250ZXh0KG1f
ZGlzcGxheSwgY29uZmlnWzBdLCBHTFhfUkdCQV9UWVBFLCAwLCBUcnVlKTsKKyAgICBHTFhDb250
ZXh0IGNvbnRleHQgPSBzX2dsLT5jcmVhdGVOZXdDb250ZXh0KGNvbmZpZ1swXSwgR0xYX1JHQkFf
VFlQRSwgMCwgVHJ1ZSk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIHByaW50ZigiR3Jh
cGhpY3NDb250ZXh0M0Q6IGdsWENyZWF0ZU5ld0NvbnRleHQgZmFpbGVkXG4iKTsKICAgICAgICAg
WEZyZWUoY29uZmlnKTsKQEAgLTQ1MSwxMyArNTQzLDEzIEBAIEdyYXBoaWNzQ29udGV4dDNESW50
ZXJuYWw6OkdyYXBoaWNzQ29udGUKICAgICAgICAgMSwKICAgICAgICAgMAogICAgIH07Ci0gICAg
R0xYUGJ1ZmZlciBwYnVmZmVyID0gbV9nbFhDcmVhdGVQYnVmZmVyKG1fZGlzcGxheSwgY29uZmln
WzBdLCBwYnVmZmVyQXR0cnMpOworICAgIEdMWFBidWZmZXIgcGJ1ZmZlciA9IHNfZ2wtPmNyZWF0
ZVBidWZmZXIoY29uZmlnWzBdLCBwYnVmZmVyQXR0cnMpOwogICAgIFhGcmVlKGNvbmZpZyk7CiAg
ICAgaWYgKCFwYnVmZmVyKSB7CiAgICAgICAgIHByaW50ZigiR3JhcGhpY3NDb250ZXh0M0Q6IGds
eENyZWF0ZVBidWZmZXIgZmFpbGVkXG4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIW1fZ2xYTWFrZUN1cnJlbnQobV9kaXNwbGF5LCBwYnVmZmVyLCBjb250ZXh0KSkgeworICAg
IGlmICghc19nbC0+bWFrZUN1cnJlbnQocGJ1ZmZlciwgY29udGV4dCkpIHsKICAgICAgICAgcHJp
bnRmKCJHcmFwaGljc0NvbnRleHQzRDogZ2xYTWFrZUN1cnJlbnQgZmFpbGVkXG4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTQ2Nyw4ICs1NTksNyBAQCBHcmFwaGljc0NvbnRleHQzRElu
dGVybmFsOjpHcmFwaGljc0NvbnRlCiAjZXJyb3IgTXVzdCBwb3J0IHRvIHlvdXIgcGxhdGZvcm0K
ICNlbmRpZgogCi0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWRHTEVXID0gZmFsc2U7Ci0gICAg
aWYgKCFpbml0aWFsaXplZEdMRVcpIHsKKyAgICBpZiAoIXNfaW5pdGlhbGl6ZWRHTEVXKSB7CiAg
ICAgICAgIC8vIEluaXRpYWxpemUgR0xFVyBhbmQgY2hlY2sgZm9yIEdMIDIuMCBzdXBwb3J0IGJ5
IHRoZSBkcml2ZXJzLgogICAgICAgICBHTGVudW0gZ2xld0luaXRSZXN1bHQgPSBnbGV3SW5pdCgp
OwogICAgICAgICBpZiAoZ2xld0luaXRSZXN1bHQgIT0gR0xFV19PSykgewpAQCAtNDc5LDcgKzU3
MCw3IEBAIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGUKICAgICAgICAg
ICAgIHByaW50ZigiR3JhcGhpY3NDb250ZXh0M0Q6IE9wZW5HTCAyLjAgbm90IHN1cHBvcnRlZFxu
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaW5pdGlhbGl6ZWRH
TEVXID0gdHJ1ZTsKKyAgICAgICAgc19pbml0aWFsaXplZEdMRVcgPSB0cnVlOwogICAgIH0KIH0K
IApAQCAtNTExLDExICs2MDIsOSBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhp
Y3NDb250CiAgICAgaWYgKG1fcmVuZGVyT3V0cHV0KQogICAgICAgICBkZWxldGVbXSBtX3JlbmRl
ck91dHB1dDsKICNlbGlmIFBMQVRGT1JNKExJTlVYKQotICAgIG1fZ2xYTWFrZUN1cnJlbnQobV9k
aXNwbGF5LCAwLCAwKTsKLSAgICBtX2dsWERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9jb250
ZXh0T2JqKTsKLSAgICBtX2dsWERlc3Ryb3lQYnVmZmVyKG1fZGlzcGxheSwgbV9wYnVmZmVyKTsK
LSAgICBYQ2xvc2VEaXNwbGF5KG1fZGlzcGxheSk7Ci0gICAgZGxjbG9zZShtX2xpYkdMKTsKKyAg
ICBzX2dsLT5tYWtlQ3VycmVudCgwLCAwKTsKKyAgICBzX2dsLT5kZXN0cm95Q29udGV4dChtX2Nv
bnRleHRPYmopOworICAgIHNfZ2wtPmRlc3Ryb3lQYnVmZmVyKG1fcGJ1ZmZlcik7CiAjZWxzZQog
I2Vycm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTUzMyw4ICs2MjIs
OCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6Om1ha2VDb250CiAgICAgICAgIGlm
IChDR0xTZXRDdXJyZW50Q29udGV4dChtX2NvbnRleHRPYmopID09IGtDR0xOb0Vycm9yKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZWxpZiBQTEFURk9STShMSU5VWCkKLSAgICBpZiAobV9n
bFhHZXRDdXJyZW50Q29udGV4dCgpICE9IG1fY29udGV4dE9iaikKLSAgICAgICAgaWYgKG1fZ2xY
TWFrZUN1cnJlbnQobV9kaXNwbGF5LCBtX3BidWZmZXIsIG1fY29udGV4dE9iaikpCisgICAgaWYg
KHNfZ2wtPmdldEN1cnJlbnRDb250ZXh0KCkgIT0gbV9jb250ZXh0T2JqKQorICAgICAgICBpZiAo
c19nbC0+bWFrZUN1cnJlbnQobV9wYnVmZmVyLCBtX2NvbnRleHRPYmopKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogI2Vycm9yIE11c3QgcG9ydCB0byB5b3VyIHBsYXRmb3JtCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>