<?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>13596</bug_id>
          
          <creation_ts>2007-05-05 10:26:03 -0700</creation_ts>
          <short_desc>Implement .onprogress handler on XMLHttpRequest objects to support progressive download content length information</short_desc>
          <delta_ts>2008-04-21 07:48:05 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Antoine Quint">ml</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>jchaffraix</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10897</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">ml</who>
    <bug_when>2007-05-05 10:26:03 -0700</bug_when>
    <thetext>In current WebKit nightlies, the only mean I found to get information about a progressive download is through a rather inefficient method: querying .responseText.length and getting the Content-Length header on each call of .onreadystatechange handler. Mozilla support a special .onprogress handler which is passed an event object with a .position and .totalSize properties as an argument. This is mentioned
on the MozDev page http://developer.mozilla.org/en/docs/XMLHttpRequest.

See bug http://bugs.webkit.org/show_bug.cgi?id=13595 to see how bad the current technique is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75562</commentid>
    <comment_count>1</comment_count>
      <attachid>20144</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-03-27 20:27:01 -0700</bug_when>
    <thetext>Created attachment 20144
First version

It is a first version of onprogress handler. It uses a ProgressEvent as required by the XHR2 standard. It means that we do not match Firefox interface to get the attributes from the event (totalSize is replaced by total and position is replaced loaded).
I have tried defining a custom event to match Firefox but we are basically reimplementing ProgressEvent with just another interface so I decided to stand with the standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75612</commentid>
    <comment_count>2</comment_count>
      <attachid>20152</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-03-28 03:12:55 -0700</bug_when>
    <thetext>Created attachment 20152
Updated first version

I had a variable name + some ChangeLog issues that the new patch should remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>75916</commentid>
    <comment_count>3</comment_count>
      <attachid>20152</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-03-31 01:24:19 -0700</bug_when>
    <thetext>Comment on attachment 20152
Updated first version

+        Our event does not match Firefox interface but matches the XHR2 standard.

I think we&apos;d need to have more clarity on why these are different. Is Firefox going to change to match the draft spec?

--- a/WebCore/WebCore.order
+++ b/WebCore/WebCore.order

I do not think order files are to be manually edited.

+    m_receivedLength = 0;

It might make sense to consider how this will work with multipart responses - although it&apos;s not strictly necessary for this patch, given that we don&apos;t support those anyway yet.

+    // FIXME: We are called too often (3-4 times more that firefox) so we have a huge performance hit

Is this something that needs to be addressed at CFNetwork level? Can we make a workaround (I assume the hit is caused by the actual event handlers, so perhaps we could throttle event firing within WebCore)? We can&apos;t take a performance hit without at least having a clear plan on how to remedy it. But also, the scope of the problem is not quite obvious - what are the scenarios where this would be noticeable?

Also, &quot;Firefox&quot; with capital &quot;F&quot;, and we usually put a dot at the end of a full sentence like this.

+    if (!expectedLength || m_receivedLength &gt; expectedLength)
+        evt = new ProgressEvent(&quot;progress&quot;, false, m_receivedLength, expectedLength);
+    else
+        evt = new ProgressEvent(&quot;progress&quot;, true, m_receivedLength, expectedLength);

This would look better with a local variable for &quot;!expectedLength || m_receivedLength &gt; expectedLength&quot; - no need for &quot;if&quot;.

+    void updateAndDispatchOnProgress(int len);

In didReceiveData(), len is an int because it can be -1, indicating a null-terminated string. But in updateAndDispatchOnProgress(), the length is always known, so it would be better to use unsigned.

r- for Firefox compatibility and performance questions for now, but this looks good to me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76055</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-01 04:58:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 20152 [edit])
&gt; +        Our event does not match Firefox interface but matches the XHR2
&gt; standard.
&gt; 
&gt; I think we&apos;d need to have more clarity on why these are different. Is Firefox
&gt; going to change to match the draft spec?
&gt; 

As discussed on IRC, I have asked for a clarification on the public-webapi ML (will post a link to the archive here when I have it).

&gt; --- a/WebCore/WebCore.order
&gt; +++ b/WebCore/WebCore.order
&gt; 
&gt; I do not think order files are to be manually edited.
&gt; 
A dumb mistake, will be removed.

&gt; +    m_receivedLength = 0;
&gt; 
&gt; It might make sense to consider how this will work with multipart responses -
&gt; although it&apos;s not strictly necessary for this patch, given that we don&apos;t
&gt; support those anyway yet.
&gt; 

I have not though about multipart support, but I think this issue can be postponed until we support it (will add a FIXME to indicate that multipart support should be careful with that).

&gt; +    // FIXME: We are called too often (3-4 times more that firefox) so we have
&gt; a huge performance hit
&gt; 
&gt; Is this something that needs to be addressed at CFNetwork level? Can we make a
&gt; workaround (I assume the hit is caused by the actual event handlers, so perhaps
&gt; we could throttle event firing within WebCore)? We can&apos;t take a performance hit
&gt; without at least having a clear plan on how to remedy it. But also, the scope
&gt; of the problem is not quite obvious - what are the scenarios where this would
&gt; be noticeable?
&gt; 

Yes, it will be ! (my test case was loading a big file (~3/4Mb) and showing the download progress, as we get called every 0.01% or so the perform hit was huge)

As you said the issue is the event handler. FYI, my testing were done on gtk/curl so I think the issue should be solved in WebCore. I thought I would work on it on a separate bug (to do maybe more perf testing). If you insist, I can include the fix with this patch as is quite simple (just adding a byte counter and firing the event when it is above a threshold).

&gt; Also, &quot;Firefox&quot; with capital &quot;F&quot;, and we usually put a dot at the end of a full
&gt; sentence like this.
&gt; 
&gt; +    if (!expectedLength || m_receivedLength &gt; expectedLength)
&gt; +        evt = new ProgressEvent(&quot;progress&quot;, false, m_receivedLength,
&gt; expectedLength);
&gt; +    else
&gt; +        evt = new ProgressEvent(&quot;progress&quot;, true, m_receivedLength,
&gt; expectedLength);
&gt; 
&gt; This would look better with a local variable for &quot;!expectedLength ||
&gt; m_receivedLength &gt; expectedLength&quot; - no need for &quot;if&quot;.
&gt; 
&gt; +    void updateAndDispatchOnProgress(int len);
&gt; 
&gt; In didReceiveData(), len is an int because it can be -1, indicating a
&gt; null-terminated string. But in updateAndDispatchOnProgress(), the length is
&gt; always known, so it would be better to use unsigned.
&gt; 

I will address those in the next iteration.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76057</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-01 05:10:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; As you said the issue is the event handler. FYI, my testing were done on
&gt; gtk/curl so I think the issue should be solved in WebCore. I thought I would
&gt; work on it on a separate bug (to do maybe more perf testing). If you insist, I
&gt; can include the fix with this patch as is quite simple (just adding a byte
&gt; counter and firing the event when it is above a threshold).

  Either way is OK with me, but I&apos;m not convinced that the fix will be that simple. What happens if the data is sent slowly (e.g. 1 byte per second)? I would expect to get an event for each byte.

  I think that this is a practical use case, as progress of a lengthy operation can be reported in this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76076</commentid>
    <comment_count>6</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-01 14:16:33 -0700</bug_when>
    <thetext>Discussion address:

http://www.nabble.com/-XHR2--onprogress-Event-issue-to16419994.html


&gt; 
&gt;   Either way is OK with me, but I&apos;m not convinced that the fix will be that
&gt; simple. What happens if the data is sent slowly (e.g. 1 byte per second)? I
&gt; would expect to get an event for each byte.
&gt; 
&gt;   I think that this is a practical use case, as progress of a lengthy operation
&gt; can be reported in this way.
&gt; 

Indeed. I have not thought about that.

I will feel more comfortable if we move the performance issue on an separate bug (as you showed we have to think carefully about it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77622</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-14 15:51:04 -0700</bug_when>
    <thetext>Just an update: 

We will have to create a custom event for onprogress as we need to both support LSProgressEvent (without the input attribute) and ProgressEvent interface (see the discussion on public-webapi about that). 
I am planning on calling it XMLHttpRequestProgressEvent (rather long but better long than ambiguous). To avoid adding LSProgressEvent idl without any real use, XMLHttpRequestProgressEvent will inherit from on ProgressEvent and add the LSProgressEvent bits in its idl.

I hope to finish the new version by tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>77714</commentid>
    <comment_count>8</comment_count>
      <attachid>20563</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-15 12:22:00 -0700</bug_when>
    <thetext>Created attachment 20563
Updated patch (include custom event + Ap&apos;s comments)

Patch as promised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78327</commentid>
    <comment_count>9</comment_count>
      <attachid>20708</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-20 14:19:16 -0700</bug_when>
    <thetext>Created attachment 20708
Updated after XMLHttpRequest changes and IDL introduction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78384</commentid>
    <comment_count>10</comment_count>
      <attachid>20708</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-21 02:02:31 -0700</bug_when>
    <thetext>Comment on attachment 20708
Updated after XMLHttpRequest changes and IDL introduction

I think that we need to support adding handlers via addEventListener, not just .onprogress.

I have noticed that the spec actually describes when the event should be fired: &quot;every 350ms (+-200ms) or for every byte received, whichever is least frequent.&quot; I think it&apos;s OK to land a first version as is, to improve on this later.

+        // XmlHttpRequest 2 extension

Should be &quot;XMLHttpRequest&quot;.

+unsigned XMLHttpRequestProgressEvent::position()
+{
+    // FIXME: If lengthComputable is false, what should we return?
+    return m_loaded;
+}

What is wrong with returning m_loaded?

+    evt = new XMLHttpRequestProgressEvent(&quot;progress&quot;, expectedLength &amp;&amp; m_receivedLength &lt;= expectedLength, m_receivedLength, expectedLength);

Should be progressEvent to avoid constructing an AtomicString from &quot;progress&quot; again and again.

I think that this is almost ready for landing, but not quite yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78392</commentid>
    <comment_count>11</comment_count>
      <attachid>20722</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-21 06:41:51 -0700</bug_when>
    <thetext>Created attachment 20722
Updated with Ap&apos;s latest comments

&gt; I think that we need to support adding handlers via addEventListener, not just
&gt; .onprogress.

As mentioned on IRC, we can can register those handlers but they were not called because of an error on my side (forgotten to call dispatchEvent). Should be corrected.

&gt; I have noticed that the spec actually describes when the event should be fired:
&gt;&quot;every 350ms (+-200ms) or for every byte received, whichever is least
&gt; frequent.&quot; I think it&apos;s OK to land a first version as is, to improve on this
&gt; later.

I had not seen that. 

&gt; +        // XmlHttpRequest 2 extension
&gt; Should be &quot;XMLHttpRequest&quot;.

Corrected.

&gt; What is wrong with returning m_loaded?

I had to check Firefox behaviour first: there was some mention of giving special value if computableLength was false and I thought it could apply here too. I have check and we match Firefox so removed the 2 comments.

&gt; Should be progressEvent to avoid constructing an AtomicString from &quot;progress&quot;
&gt; again and again.

Corrected too.

I only included a &quot;proof of concept&quot; test case and some of your comments ask for more of them. I will bundle more and have them landed later to have a broader regression test suite (the patch is big enough without them ;)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78393</commentid>
    <comment_count>12</comment_count>
      <attachid>20722</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-04-21 06:53:21 -0700</bug_when>
    <thetext>Comment on attachment 20722
Updated with Ap&apos;s latest comments

r=me, good work!

Please do file bugs for the remaining issues we discussed above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78398</commentid>
    <comment_count>13</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2008-04-21 07:48:05 -0700</bug_when>
    <thetext>Committed in r32316.

Filed 2 bugs:
- Bug 18655: [XHR] OnProgress needs more test case
- Bug 18654: [XHR] onProgress event needs to be dispatched according to what the specification states</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20144</attachid>
            <date>2008-03-27 20:27:01 -0700</date>
            <delta_ts>2008-03-28 03:12:55 -0700</delta_ts>
            <desc>First version</desc>
            <filename>XHR-OnProgressNoCustom-CL.patch</filename>
            <type>text/plain</type>
            <size>12777</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMzAxNWQwLi44MjczNjhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDMt
MjcgIEp1bGllbiBDaGFmZnJhaXggIDxqdWxpZW4uY2hhZmZyYWl4QGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTM1OTY6IElt
cGxlbWVudCAub25wcm9ncmVzcyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8g
c3VwcG9ydCBwcm9ncmVzc2l2ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbgor
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9pbmZvT25Qcm9ncmVzc0V2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDA4LTAzLTI2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgQWRhbSBS
b2Jlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
aW5mb09uUHJvZ3Jlc3NFdmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjI2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgY2FzZSBmb3IgYnVnIDEzNTk2OiBJ
bXBsZW1lbnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRv
IHN1cHBvcnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24K
KworWW91IHNob3VsZCBzZWUgdHlwZSwgYnViYmxlLCBjYW5jZWxhYmxlLCBldmVudFBoYXNlLCB0
YXJnZXQgYW5kIGN1cnJlbnQgdGFyZ2V0IGZvciBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3Vz
IGNhc2VzCisKK1N5bmNocm9ub3VzIGNhc2U6CitUeXBlOiBwcm9ncmVzcworQnViYmxlOiBmYWxz
ZQorQ2FuY2VsYWJsZTogZmFsc2UKK0V2ZW50UGhhc2U6IDAKK1RhcmdldDogW29iamVjdCBYTUxI
dHRwUmVxdWVzdF0KK0N1cnJlbnQgdGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XQorCitB
c3luY2hyb25vdXMgY2FzZToKK1R5cGU6IHByb2dyZXNzCitCdWJibGU6IGZhbHNlCitDYW5jZWxh
YmxlOiBmYWxzZQorRXZlbnRQaGFzZTogMAorVGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0
XQorQ3VycmVudCB0YXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVu
dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9n
cmVzc0V2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwZDQ4
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxodG1sPgorPGhl
YWQvPgorPGJvZHk+Cis8cD4gVGVzdCBjYXNlIGZvciBidWcgMTM1OTY6IEltcGxlbWVudCAub25w
cm9ncmVzcyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8gc3VwcG9ydCBwcm9n
cmVzc2l2ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbiA8L3A+Cis8cD4gWW91
IHNob3VsZCBzZWUgdHlwZSwgYnViYmxlLCBjYW5jZWxhYmxlLCBldmVudFBoYXNlLCB0YXJnZXQg
YW5kIGN1cnJlbnQgdGFyZ2V0IGZvciBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGNhc2Vz
IDwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyAobXNn
KQoreworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobXNnKSk7CisgICAgaW5zZXJ0TmV3TGluZSgpOworfQorCitmdW5jdGlvbiBpbnNlcnROZXdM
aW5lKCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJyIikpOworfQorCitmdW5jdGlvbiBvblByb2dyZXNzKGUpIHsKKyAgICBsb2coIlR5
cGU6ICIgKyBlLnR5cGUpOworICAgIGxvZygiQnViYmxlOiAiICsgZS5idWJibGVzKTsKKyAgICBs
b2coIkNhbmNlbGFibGU6ICIgKyBlLmNhbmNlbGFibGUpOworICAgIGxvZygiRXZlbnRQaGFzZTog
IiArIGUuZXZlbnRQaGFzZSk7CisgICAgbG9nKCJUYXJnZXQ6ICIgKyBlLnRhcmdldCk7CisgICAg
bG9nKCJDdXJyZW50IHRhcmdldDogIiArIGUuY3VycmVudFRhcmdldCk7CisgICAgZS5jdXJyZW50
VGFyZ2V0Lm9ucHJvZ3Jlc3MgPSBudWxsOworICAgIGlmIChzaG91bGROb3RpZnkgJiYgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uRXJyb3IoZSkgeworICBhbGVydCgiRXJyb3IgIiAr
IGUudGFyZ2V0LnN0YXR1cyArICIgb2NjdXJyZWQgd2hpbGUgcmVjZWl2aW5nIHRoZSBkb2N1bWVu
dC4iKTsKK30KKwordmFyIHNob3VsZE5vdGlmeSA9IGZhbHNlOworCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworbG9nKCJT
eW5jaHJvbm91cyBjYXNlOiIpOworCisvLyBUZXN0IHN5bmNocm9ub3VzCit2YXIgcmVxID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CityZXEub25wcm9ncmVzcyA9IG9uUHJvZ3Jlc3M7CityZXEub3Bl
bigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCBmYWxzZSk7CityZXEuc2VuZChudWxsKTsK
KworaW5zZXJ0TmV3TGluZSgpOworbG9nKCJBc3luY2hyb25vdXMgY2FzZToiKTsKKworLy8gVGVz
dCBhc3luY2hyb25vdXMKK3ZhciByZXEyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CityZXEyLm9u
cHJvZ3Jlc3MgPSBvblByb2dyZXNzOworcmVxMi5vcGVuKCJHRVQiLCAicmVzb3VyY2VzLzEyNTEu
aHRtbCIsIHRydWUpOworc2hvdWxkTm90aWZ5ID0gdHJ1ZTsKK3JlcTIuc2VuZChudWxsKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZDQ4ZjRhLi5jNWI3YjYzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDA4LTAzLTI3ICBKdWxpZW4gQ2hhZmZyYWl4ICA8anVsaWVuLmNoYWZmcmFpeEBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVn
IDEzNTk2OiBJbXBsZW1lbnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBv
YmplY3RzIHRvIHN1cHBvcnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5m
b3JtYXRpb24KKworICAgICAgICBBZGQgdGhlIG9ucHJvZ3Jlc3MgbGlzdGVuZXIgYW5kIHRoZSBY
TUxIdHRwUmVxdWVzdCBiaW5kaW5ncy4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgYSBQcm9ncmVz
c0V2ZW50IHRvIGNhcnJ5IHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgbGlzdGVuZXIuCisgICAgICAg
IFRodXMgb3VyIGV2ZW50IGRvZXMgbm90IG1hdGNoIEZpcmVmb3ggaW50ZXJmYWNlIGJ1dCBtYXRj
aGVzIHRoZSBYSFIyIHN0YW5kYXJkLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6Z2V0VmFsdWVQcm9wZXJ0eSk6IEFkZCB0aGUg
b25wcm9ncmVzcyB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnB1
dFZhbHVlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvblByb2dyZXNzTGlzdGVuZXIpOiBvbnByb2dyZXNzIGdl
dHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRPblByb2dyZXNzTGlz
dGVuZXIpOiBvbnByb2dyZXNzIHNldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjppbnRlcm5hbEFib3J0KTogcmVzZXQgbV9zZW5kTGVuZ3RoIG9uIGFib3J0LgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKTogYWRkIHVwZGF0ZUFu
ZERpc3BhdGNoT25Qcm9ncmVzcyBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyk6IFVzZWQgdG8gdXBkYXRlIG9ucHJvZ3Jl
c3MKKyAgICAgICAgaW5mb3JtYXRpb24gYW5kIGRpc3BhdGNoIHRoZSBldmVudC4KKworICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDA4LTAzLTI2ICBUaW1vdGh5IEhhdGNoZXIg
IDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgc29tZSBJbnNwZWN0b3IgZmls
ZXMgdG8gZmFjaWxpdGF0ZSB0aGUgdXAtY29taW5nIFVJIHJlZnJlc2ggY2hhbmdlcy4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRl
eCA4Y2Q4MDlmLi44YmUwZmQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0zNDM2LDYgKzM0MzYsNyBAQCBfX1pON1dlYkNv
cmUxMk5hbWVkQXR0ck1hcDE3ZGV0YWNoRnJvbUVsZW1lbnRFdgogX19aTjdXZWJDb3JlMThOYW1l
ZE1hcHBlZEF0dHJNYXAxNWNsZWFyQXR0cmlidXRlc0V2CiBfX1pON1dlYkNvcmUxNFhNTEh0dHBS
ZXF1ZXN0MTZkZXJlZkV2ZW50VGFyZ2V0RXYKIF9fWk43V2ViQ29yZTE0WE1MSHR0cFJlcXVlc3Qx
N3NldE9uTG9hZExpc3RlbmVyRVBOU18xM0V2ZW50TGlzdGVuZXJFCitfX1pON1dlYkNvcmUxNFhN
TEh0dHBSZXF1ZXN0MjFzZXRPblByb2dyZXNzTGlzdGVuZXJFUE5TXzEzRXZlbnRMaXN0ZW5lckUK
IF9fWk4zV1RGOUhhc2hUYWJsZUlpU3Q0cGFpcklpTlNfNlZlY3RvcklOU182UmVmUHRySU43V2Vi
Q29yZTEzRXZlbnRMaXN0ZW5lckVFRUxtMEVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTOF9F
RU5TXzdJbnRIYXNoSWlFRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSWlFRU5T
RV9JUzdfRUVFRVNGX0U2ZXhwYW5kRXYKIF9fWk43V2ViQ29yZTI4cmVtb3ZlRnJvbVJlcXVlc3Rz
QnlEb2N1bWVudEVQTlNfOERvY3VtZW50RVBOU18xNFhNTEh0dHBSZXF1ZXN0RQogX19aTjdXZWJD
b3JlN0VsZW1lbnREMUV2CkBAIC00OTc5LDYgKzQ5ODAsNyBAQCBfX1pON1dlYkNvcmUxNkpTSFRN
TE1hcEVsZW1lbnQxOGdldE93blByb3BlcnR5U2xvdEVQTjNLSlM5RXhlY1N0YXRlRVJLTlMxXzEw
SWRlbgogX19aTjNLSlMxNkpTWE1MSHR0cFJlcXVlc3Q0bWFya0V2CiBfX1pOSzdXZWJDb3JlMTRY
TUxIdHRwUmVxdWVzdDI2b25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXJFdgogX19aTks3V2ViQ29y
ZTE0WE1MSHR0cFJlcXVlc3QxNG9uTG9hZExpc3RlbmVyRXYKK19fWk5LN1dlYkNvcmUxNFhNTEh0
dHBSZXF1ZXN0MThvblByb2dyZXNzTGlzdGVuZXJFdgogX19aTjdXZWJDb3JlMjZKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcjRtYXJrRXYKIF9fWk43V2ViQ29yZTE0Q2FjaGVkUmVzb3VyY2UxMXNl
dEVuY29kaW5nRVJLTlNfNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2VEMUV2CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxZjdhOGY4Li42MmMw
NTY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTg3LDYg
Kzg3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTWE1MSHR0cFJlcXVlc3Q6OnNfaW5mbyA9IHsgIlhN
TEh0dHBSZXF1ZXN0IiwgMCwgJkpTWE1MSHR0cFJlcXUKICAgc3RhdHVzVGV4dCAgICAgICAgICAg
IEpTWE1MSHR0cFJlcXVlc3Q6OlN0YXR1c1RleHQgICAgICAgICAgICAgIERvbnREZWxldGV8UmVh
ZE9ubHkKICAgb25yZWFkeXN0YXRlY2hhbmdlICAgIEpTWE1MSHR0cFJlcXVlc3Q6Ok9ucmVhZHlz
dGF0ZWNoYW5nZSAgICAgIERvbnREZWxldGUKICAgb25sb2FkICAgICAgICAgICAgICAgIEpTWE1M
SHR0cFJlcXVlc3Q6Ok9ubG9hZCAgICAgICAgICAgICAgICAgIERvbnREZWxldGUKKyAgb25wcm9n
cmVzcyAgICAgICAgICAgIEpTWE1MSHR0cFJlcXVlc3Q6Ok9ucHJvZ3Jlc3MgICAgICAgICAgICAg
IERvbnREZWxldGUKIEBlbmQKICovCiAKQEAgLTEzNSw2ICsxMzYsMTEgQEAgSlNWYWx1ZSogSlNY
TUxIdHRwUmVxdWVzdDo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGludCB0b2tl
bikgY29uc3QKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlz
dGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5l
ck9iajsKICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICAgICAgY2FzZSBPbnByb2dy
ZXNzOgorICAgICAgICAgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5l
ciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vblBy
b2dyZXNzTGlzdGVuZXIoKSkpCisgICAgICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5l
ck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbGlzdGVuZXJPYmo7CisgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjgsNiArMTc0LDE2IEBA
IHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6cHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMs
IGludCB0b2tlbiwgSlNWYWx1ZSogdmFsCiAgICAgICAgICAgICBtX2ltcGwtPnNldE9uTG9hZExp
c3RlbmVyKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBPbnByb2dyZXNzOiB7CisgICAgICAgICAgICBEb2N1bWVudCogZG9jID0g
bV9pbXBsLT5kb2N1bWVudCgpOworICAgICAgICAgICAgaWYgKCFkb2MpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jLT5mcmFtZSgpOworICAg
ICAgICAgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBtX2ltcGwtPnNldE9uUHJvZ3Jlc3NMaXN0ZW5lcih0b0pTRE9NV2luZG93KGZyYW1lKS0+Zmlu
ZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdC5oCmluZGV4IDRkNjE5ZjYuLmExOWFjNjIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNYTUxIdHRwUmVxdWVzdC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgY29uc3QgS0pTOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZz
X2luZm87IH0KICAgICBzdGF0aWMgY29uc3QgS0pTOjpDbGFzc0luZm8gc19pbmZvOwotICAgIGVu
dW0geyBPbmxvYWQsIE9ucmVhZHlzdGF0ZWNoYW5nZSwgUmVhZHlTdGF0ZSwgUmVzcG9uc2VUZXh0
LCBSZXNwb25zZVhNTCwgU3RhdHVzLAorICAgIGVudW0geyBPbmxvYWQsIE9ucHJvZ3Jlc3MsIE9u
cmVhZHlzdGF0ZWNoYW5nZSwgUmVhZHlTdGF0ZSwgUmVzcG9uc2VUZXh0LCBSZXNwb25zZVhNTCwg
U3RhdHVzLAogICAgICAgICBTdGF0dXNUZXh0LCBBYm9ydCwgR2V0QWxsUmVzcG9uc2VIZWFkZXJz
LCBHZXRSZXNwb25zZUhlYWRlciwgT3BlbiwgU2VuZCwgU2V0UmVxdWVzdEhlYWRlciwgT3ZlcnJp
ZGVNSU1FVHlwZSwKICAgICAgICAgQWRkRXZlbnRMaXN0ZW5lciwgUmVtb3ZlRXZlbnRMaXN0ZW5l
ciwgRGlzcGF0Y2hFdmVudCB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggN2VmMmJhNy4u
ZGUwZGFkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRS
ZXNvdXJjZURlY29kZXIuaCIKQEAgLTE4NywxMSArMTg4LDIxIEBAIEV2ZW50TGlzdGVuZXIqIFhN
TEh0dHBSZXF1ZXN0OjpvbkxvYWRMaXN0ZW5lcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fb25Mb2Fk
TGlzdGVuZXIuZ2V0KCk7CiB9CiAKK0V2ZW50TGlzdGVuZXIqIFhNTEh0dHBSZXF1ZXN0OjpvblBy
b2dyZXNzTGlzdGVuZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX29uUHJvZ3Jlc3NMaXN0ZW5l
ci5nZXQoKTsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0T25Mb2FkTGlzdGVuZXIoRXZl
bnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lcikKIHsKICAgICBtX29uTG9hZExpc3RlbmVyID0gZXZl
bnRMaXN0ZW5lcjsKIH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0T25Qcm9ncmVzc0xpc3Rl
bmVyKEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXIpCit7CisgICAgbV9vblByb2dyZXNzTGlz
dGVuZXIgPSBldmVudExpc3RlbmVyOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIsIGJvb2wpCiB7CiAgICAgRXZlbnRMaXN0ZW5lcnNNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX2V2ZW50TGlzdGVuZXJzLmZpbmQoZXZlbnRUeXBlLmltcGwoKSk7
CkBAIC01MDIsNiArNTEzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCgp
CiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsKIAogICAgIG1fYWJvcnRlZCA9IHRydWU7
CisgICAgbV9zZW5kTGVuZ3RoID0gMDsKIAogICAgIGlmIChoYWRMb2FkZXIpIHsKICAgICAgICAg
bV9sb2FkZXItPmNhbmNlbCgpOwpAQCAtNzYzLDYgKzc3NSw4IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwg
aW50IGxlCiAgICAgfQogCiAgICAgaWYgKCFtX2Fib3J0ZWQpIHsKKyAgICAgICAgdXBkYXRlQW5k
RGlzcGF0Y2hPblByb2dyZXNzKGxlbik7CisKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gUmVjZWl2
aW5nKQogICAgICAgICAgICAgY2hhbmdlU3RhdGUoUmVjZWl2aW5nKTsKICAgICAgICAgZWxzZQpA
QCAtNzcxLDYgKzc4NSwzMCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShT
dWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZQogICAgIH0KIH0KIAor
dm9pZCBYTUxIdHRwUmVxdWVzdDo6dXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNzKGludCBsZW4p
Cit7CisgICAgbG9uZyBsb25nIGV4cGVjdGVkTGVuZ3RoID0gbV9yZXNwb25zZS5leHBlY3RlZENv
bnRlbnRMZW5ndGgoKTsKKworICAgIG1fc2VuZExlbmd0aCArPSBsZW47CisKKyAgICAvLyBGSVhN
RTogV2UgYXJlIGNhbGxlZCB0b28gb2Z0ZW4gKDMtNCB0aW1lcyBtb3JlIHRoYXQgZmlyZWZveCkg
c28gd2UgaGF2ZSBhIGh1Z2UgcGVyZm9ybWFuY2UgaGl0CisKKyAgICBSZWZQdHI8UHJvZ3Jlc3NF
dmVudD4gZXZ0OworCisgICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgdGhlIGluZm9ybWF0aW9uIG9y
IGl0IGlzIG9kZCwgdXNlIDAgYXMgZXhwZWN0ZWRDb250ZW50TGVuZ3RoIGFuZCBzZXQKKyAgICAv
LyBsZW5ndGhDb21wdXRhYmxlIHRvIGZhbHNlLgorICAgIGlmICghZXhwZWN0ZWRMZW5ndGggfHwg
bV9zZW5kTGVuZ3RoID4gZXhwZWN0ZWRMZW5ndGgpCisgICAgICAgIGV2dCA9IG5ldyBQcm9ncmVz
c0V2ZW50KCJwcm9ncmVzcyIsIGZhbHNlLCBtX3NlbmRMZW5ndGgsIDApOworICAgIGVsc2UKKyAg
ICAgICAgZXZ0ID0gbmV3IFByb2dyZXNzRXZlbnQoInByb2dyZXNzIiwgdHJ1ZSwgbV9zZW5kTGVu
Z3RoLCBleHBlY3RlZExlbmd0aCk7CisKKyAgICBpZiAobV9vblByb2dyZXNzTGlzdGVuZXIpIHsK
KyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRh
cmdldCh0aGlzKTsKKyAgICAgICAgbV9vblByb2dyZXNzTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2
dC5nZXQoKSwgZmFsc2UpOworICAgIH0KK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2FuY2Vs
UmVxdWVzdHMoRG9jdW1lbnQqIG1fZG9jKQogewogICAgIFJlcXVlc3RzU2V0KiByZXF1ZXN0cyA9
IHJlcXVlc3RzQnlEb2N1bWVudCgpLmdldChtX2RvYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBh
MWM3MTE5Li4zM2NmZGYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVi
bGljOgogICAgIEV2ZW50TGlzdGVuZXIqIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRPbkxvYWRMaXN0ZW5lcihFdmVudExpc3RlbmVyKik7CiAgICAgRXZl
bnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE9uUHJvZ3Jl
c3NMaXN0ZW5lcihFdmVudExpc3RlbmVyKik7CisgICAgRXZlbnRMaXN0ZW5lciogb25Qcm9ncmVz
c0xpc3RlbmVyKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gPiBMaXN0ZW5lclZlY3RvcjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5n
SW1wbCosIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKQEAgLTk4LDYgKzEwMCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJl
c291cmNlTG9hZGVyKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIHZv
aWQgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVz
cyhpbnQgbGVuKTsKIAogICAgIFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CiAgICAg
Ym9vbCByZXNwb25zZUlzWE1MKCkgY29uc3Q7CkBAIC0xMTMsNiArMTE2LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVy
OwogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uTG9hZExpc3RlbmVyOworICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uUHJvZ3Jlc3NMaXN0ZW5lcjsKICAgICBFdmVudExpc3RlbmVy
c01hcCBtX2V2ZW50TGlzdGVuZXJzOwogCiAgICAgS1VSTCBtX3VybDsKQEAgLTE0MCw2ICsxNDQs
OSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlWE1M
OwogCiAgICAgYm9vbCBtX2Fib3J0ZWQ7CisKKyAgICAvLyBVc2VkIGZvciBvbnByb2dyZXNzIHRy
YWNraW5nCisgICAgbG9uZyBsb25nIG1fc2VuZExlbmd0aDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20152</attachid>
            <date>2008-03-28 03:12:55 -0700</date>
            <delta_ts>2008-04-15 12:22:00 -0700</delta_ts>
            <desc>Updated first version</desc>
            <filename>XHR-OnProgressNoCustom-CL.patch</filename>
            <type>text/plain</type>
            <size>12749</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNjcxNzRhLi5kN2VhM2VmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDMt
MjcgIEp1bGllbiBDaGFmZnJhaXggIDxqdWxpZW4uY2hhZmZyYWl4QGdtYWlsLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdWcgMTM1OTY6IElt
cGxlbWVudCAub25wcm9ncmVzcyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8g
c3VwcG9ydCBwcm9ncmVzc2l2ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbgor
CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9pbmZvT25Qcm9ncmVzc0V2ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDA4LTAzLTI4ICBFcmljIFNl
aWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBtanMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dy
ZXNzRXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4yODIyNjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACitUZXN0IGNhc2UgZm9yIGJ1ZyAxMzU5NjogSW1wbGVtZW50IC5v
bnByb2dyZXNzIGhhbmRsZXIgb24gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0cyB0byBzdXBwb3J0IHBy
b2dyZXNzaXZlIGRvd25sb2FkIGNvbnRlbnQgbGVuZ3RoIGluZm9ybWF0aW9uCisKK1lvdSBzaG91
bGQgc2VlIHR5cGUsIGJ1YmJsZSwgY2FuY2VsYWJsZSwgZXZlbnRQaGFzZSwgdGFyZ2V0IGFuZCBj
dXJyZW50IHRhcmdldCBmb3Igc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBjYXNlcworCitT
eW5jaHJvbm91cyBjYXNlOgorVHlwZTogcHJvZ3Jlc3MKK0J1YmJsZTogZmFsc2UKK0NhbmNlbGFi
bGU6IGZhbHNlCitFdmVudFBoYXNlOiAwCitUYXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3Rd
CitDdXJyZW50IHRhcmdldDogW29iamVjdCBYTUxIdHRwUmVxdWVzdF0KKworQXN5bmNocm9ub3Vz
IGNhc2U6CitUeXBlOiBwcm9ncmVzcworQnViYmxlOiBmYWxzZQorQ2FuY2VsYWJsZTogZmFsc2UK
K0V2ZW50UGhhc2U6IDAKK1RhcmdldDogW29iamVjdCBYTUxIdHRwUmVxdWVzdF0KK0N1cnJlbnQg
dGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MGQ0OGUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblBy
b2dyZXNzRXZlbnQuaHRtbApAQCAtMCwwICsxLDYwIEBACis8aHRtbD4KKzxoZWFkLz4KKzxib2R5
PgorPHA+IFRlc3QgY2FzZSBmb3IgYnVnIDEzNTk2OiBJbXBsZW1lbnQgLm9ucHJvZ3Jlc3MgaGFu
ZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1cHBvcnQgcHJvZ3Jlc3NpdmUgZG93
bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24gPC9wPgorPHA+IFlvdSBzaG91bGQgc2Vl
IHR5cGUsIGJ1YmJsZSwgY2FuY2VsYWJsZSwgZXZlbnRQaGFzZSwgdGFyZ2V0IGFuZCBjdXJyZW50
IHRhcmdldCBmb3Igc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBjYXNlcyA8L3A+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5jdGlvbiBsb2cgKG1zZykKK3sKKyAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1zZykpOwor
ICAgIGluc2VydE5ld0xpbmUoKTsKK30KKworZnVuY3Rpb24gaW5zZXJ0TmV3TGluZSgpCit7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIp
KTsKK30KKworZnVuY3Rpb24gb25Qcm9ncmVzcyhlKSB7CisgICAgbG9nKCJUeXBlOiAiICsgZS50
eXBlKTsKKyAgICBsb2coIkJ1YmJsZTogIiArIGUuYnViYmxlcyk7CisgICAgbG9nKCJDYW5jZWxh
YmxlOiAiICsgZS5jYW5jZWxhYmxlKTsKKyAgICBsb2coIkV2ZW50UGhhc2U6ICIgKyBlLmV2ZW50
UGhhc2UpOworICAgIGxvZygiVGFyZ2V0OiAiICsgZS50YXJnZXQpOworICAgIGxvZygiQ3VycmVu
dCB0YXJnZXQ6ICIgKyBlLmN1cnJlbnRUYXJnZXQpOworICAgIGUuY3VycmVudFRhcmdldC5vbnBy
b2dyZXNzID0gbnVsbDsKKyAgICBpZiAoc2hvdWxkTm90aWZ5ICYmIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorCitmdW5jdGlvbiBvbkVycm9yKGUpIHsKKyAgYWxlcnQoIkVycm9yICIgKyBlLnRhcmdldC5z
dGF0dXMgKyAiIG9jY3VycmVkIHdoaWxlIHJlY2VpdmluZyB0aGUgZG9jdW1lbnQuIik7Cit9CisK
K3ZhciBzaG91bGROb3RpZnkgPSBmYWxzZTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2xvZygiU3luY2hyb25vdXMg
Y2FzZToiKTsKKworLy8gVGVzdCBzeW5jaHJvbm91cwordmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworcmVxLm9ucHJvZ3Jlc3MgPSBvblByb2dyZXNzOworcmVxLm9wZW4oIkdFVCIsICJy
ZXNvdXJjZXMvMTI1MS5odG1sIiwgZmFsc2UpOworcmVxLnNlbmQobnVsbCk7CisKK2luc2VydE5l
d0xpbmUoKTsKK2xvZygiQXN5bmNocm9ub3VzIGNhc2U6Iik7CisKKy8vIFRlc3QgYXN5bmNocm9u
b3VzCit2YXIgcmVxMiA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworcmVxMi5vbnByb2dyZXNzID0g
b25Qcm9ncmVzczsKK3JlcTIub3BlbigiR0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCB0cnVl
KTsKK3Nob3VsZE5vdGlmeSA9IHRydWU7CityZXEyLnNlbmQobnVsbCk7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZWNhYWU4NC4uMjAxOTk3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOC0wMy0y
OCAgSnVsaWVuIENoYWZmcmFpeCAgPGp1bGllbi5jaGFmZnJhaXhAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAxMzU5NjogSW1w
bGVtZW50IC5vbnByb2dyZXNzIGhhbmRsZXIgb24gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0cyB0byBz
dXBwb3J0IHByb2dyZXNzaXZlIGRvd25sb2FkIGNvbnRlbnQgbGVuZ3RoIGluZm9ybWF0aW9uCisK
KyAgICAgICAgQWRkIHRoZSBvbnByb2dyZXNzIHByb3BlcnR5IHRvIFhNTEh0dHBSZXF1ZXN0IGFu
ZCB0aGUgbmVjZXNzYXJ5IGNhbGxzLiBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBhIFByb2dyZXNz
RXZlbnQgdG8gY2FycnkgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBsaXN0ZW5lci4KKyAgICAgICAg
T3VyIGV2ZW50IGRvZXMgbm90IG1hdGNoIEZpcmVmb3ggaW50ZXJmYWNlIGJ1dCBtYXRjaGVzIHRo
ZSBYSFIyIHN0YW5kYXJkLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBB
ZGQgb25wcm9ncmVzcyBnZXR0ZXIgYW5kIHNldHRlci4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6
OmdldFZhbHVlUHJvcGVydHkpOiBBZGQgdGhlIG9ucHJvZ3Jlc3MgcHJvcGVydHkuCisgICAgICAg
IChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAqIHhtbC9Y
TUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25Q
cm9ncmVzc0xpc3RlbmVyKTogb25wcm9ncmVzcyBnZXR0ZXIuCisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6c2V0T25Qcm9ncmVzc0xpc3RlbmVyKTogb25wcm9ncmVzcyBzZXR0ZXIu
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6IHJlc2V0
IG1fcmVjZWl2ZWRMZW5ndGggb24gYWJvcnQuCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEpOiBhZGQgdXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNzIGNh
bGwuCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBkYXRlQW5kRGlzcGF0Y2hP
blByb2dyZXNzKTogVXNlZCB0byB1cGRhdGUgb25wcm9ncmVzcworICAgICAgICBpbmZvcm1hdGlv
biBhbmQgZGlzcGF0Y2ggdGhlIGV2ZW50LgorCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
Lmg6CisKIDIwMDgtMDMtMjggIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBGaXggdGhlIFF0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyIGIvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDhjZDgwOWYuLjhiZTBmZDMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKQEAgLTM0MzYsNiArMzQzNiw3IEBAIF9fWk43V2ViQ29yZTEyTmFtZWRBdHRyTWFwMTdkZXRh
Y2hGcm9tRWxlbWVudEV2CiBfX1pON1dlYkNvcmUxOE5hbWVkTWFwcGVkQXR0ck1hcDE1Y2xlYXJB
dHRyaWJ1dGVzRXYKIF9fWk43V2ViQ29yZTE0WE1MSHR0cFJlcXVlc3QxNmRlcmVmRXZlbnRUYXJn
ZXRFdgogX19aTjdXZWJDb3JlMTRYTUxIdHRwUmVxdWVzdDE3c2V0T25Mb2FkTGlzdGVuZXJFUE5T
XzEzRXZlbnRMaXN0ZW5lckUKK19fWk43V2ViQ29yZTE0WE1MSHR0cFJlcXVlc3QyMXNldE9uUHJv
Z3Jlc3NMaXN0ZW5lckVQTlNfMTNFdmVudExpc3RlbmVyRQogX19aTjNXVEY5SGFzaFRhYmxlSWlT
dDRwYWlySWlOU182VmVjdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlMTNFdmVudExpc3RlbmVyRUVF
TG0wRUVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM4X0VFTlNfN0ludEhhc2hJaUVFTlNfMTRQ
YWlySGFzaFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJaUVFTlNFX0lTN19FRUVFU0ZfRTZleHBhbmRF
dgogX19aTjdXZWJDb3JlMjhyZW1vdmVGcm9tUmVxdWVzdHNCeURvY3VtZW50RVBOU184RG9jdW1l
bnRFUE5TXzE0WE1MSHR0cFJlcXVlc3RFCiBfX1pON1dlYkNvcmU3RWxlbWVudEQxRXYKQEAgLTQ5
NzksNiArNDk4MCw3IEBAIF9fWk43V2ViQ29yZTE2SlNIVE1MTWFwRWxlbWVudDE4Z2V0T3duUHJv
cGVydHlTbG90RVBOM0tKUzlFeGVjU3RhdGVFUktOUzFfMTBJZGVuCiBfX1pOM0tKUzE2SlNYTUxI
dHRwUmVxdWVzdDRtYXJrRXYKIF9fWk5LN1dlYkNvcmUxNFhNTEh0dHBSZXF1ZXN0MjZvblJlYWR5
U3RhdGVDaGFuZ2VMaXN0ZW5lckV2CiBfX1pOSzdXZWJDb3JlMTRYTUxIdHRwUmVxdWVzdDE0b25M
b2FkTGlzdGVuZXJFdgorX19aTks3V2ViQ29yZTE0WE1MSHR0cFJlcXVlc3QxOG9uUHJvZ3Jlc3NM
aXN0ZW5lckV2CiBfX1pON1dlYkNvcmUyNkpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyNG1hcmtF
dgogX19aTjdXZWJDb3JlMTRDYWNoZWRSZXNvdXJjZTExc2V0RW5jb2RpbmdFUktOU182U3RyaW5n
RQogX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZUQxRXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3QuY3BwCmluZGV4IDFmN2E4ZjguLjYyYzA1NjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtODcsNiArODcsNyBAQCBjb25zdCBDbGFzc0lu
Zm8gSlNYTUxIdHRwUmVxdWVzdDo6c19pbmZvID0geyAiWE1MSHR0cFJlcXVlc3QiLCAwLCAmSlNY
TUxIdHRwUmVxdQogICBzdGF0dXNUZXh0ICAgICAgICAgICAgSlNYTUxIdHRwUmVxdWVzdDo6U3Rh
dHVzVGV4dCAgICAgICAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICBvbnJlYWR5c3RhdGVj
aGFuZ2UgICAgSlNYTUxIdHRwUmVxdWVzdDo6T25yZWFkeXN0YXRlY2hhbmdlICAgICAgRG9udERl
bGV0ZQogICBvbmxvYWQgICAgICAgICAgICAgICAgSlNYTUxIdHRwUmVxdWVzdDo6T25sb2FkICAg
ICAgICAgICAgICAgICAgRG9udERlbGV0ZQorICBvbnByb2dyZXNzICAgICAgICAgICAgSlNYTUxI
dHRwUmVxdWVzdDo6T25wcm9ncmVzcyAgICAgICAgICAgICAgRG9udERlbGV0ZQogQGVuZAogKi8K
IApAQCAtMTM1LDYgKzEzNiwxMSBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpnZXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuKSBjb25zdAogICAgICAgICAgICAg
ICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwogICAgICAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgICAgICBjYXNlIE9ucHJvZ3Jlc3M6CisgICAgICAgICAgICBpZiAo
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uUHJvZ3Jlc3NMaXN0ZW5lcigpKSkKKyAg
ICAgICAgICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3Rl
bmVyT2JqKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKKyAgICAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KQEAgLTE2OCw2ICsxNzQsMTYgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0
OjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlKiB2
YWwKICAgICAgICAgICAgIG1faW1wbC0+c2V0T25Mb2FkTGlzdGVuZXIodG9KU0RPTVdpbmRvdyhm
cmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKHZhbHVlLCB0cnVl
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE9ucHJvZ3Jl
c3M6IHsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ltcGwtPmRvY3VtZW50KCk7Cisg
ICAgICAgICAgICBpZiAoIWRvYykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCk7CisgICAgICAgICAgICBpZiAoIWZyYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1faW1wbC0+c2V0T25Qcm9ncmVz
c0xpc3RlbmVyKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lcih2YWx1ZSwgdHJ1ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdC5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXgg
NGQ2MTlmNi4uYTE5YWM2MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBjb25zdCBLSlM6OkNsYXNz
SW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQogICAgIHN0YXRpYyBj
b25zdCBLSlM6OkNsYXNzSW5mbyBzX2luZm87Ci0gICAgZW51bSB7IE9ubG9hZCwgT25yZWFkeXN0
YXRlY2hhbmdlLCBSZWFkeVN0YXRlLCBSZXNwb25zZVRleHQsIFJlc3BvbnNlWE1MLCBTdGF0dXMs
CisgICAgZW51bSB7IE9ubG9hZCwgT25wcm9ncmVzcywgT25yZWFkeXN0YXRlY2hhbmdlLCBSZWFk
eVN0YXRlLCBSZXNwb25zZVRleHQsIFJlc3BvbnNlWE1MLCBTdGF0dXMsCiAgICAgICAgIFN0YXR1
c1RleHQsIEFib3J0LCBHZXRBbGxSZXNwb25zZUhlYWRlcnMsIEdldFJlc3BvbnNlSGVhZGVyLCBP
cGVuLCBTZW5kLCBTZXRSZXF1ZXN0SGVhZGVyLCBPdmVycmlkZU1JTUVUeXBlLAogICAgICAgICBB
ZGRFdmVudExpc3RlbmVyLCBSZW1vdmVFdmVudExpc3RlbmVyLCBEaXNwYXRjaEV2ZW50IH07CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3ZWYyYmE3Li5lMjIyMDNkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1
YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAt
MTg3LDExICsxODgsMjEgQEAgRXZlbnRMaXN0ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uTG9hZExp
c3RlbmVyKCkgY29uc3QKICAgICByZXR1cm4gbV9vbkxvYWRMaXN0ZW5lci5nZXQoKTsKIH0KIAor
RXZlbnRMaXN0ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgpOworfQorCiB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpzZXRPbkxvYWRMaXN0ZW5lcihFdmVudExpc3RlbmVyKiBldmVudExpc3Rl
bmVyKQogewogICAgIG1fb25Mb2FkTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwogfQogCit2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpzZXRPblByb2dyZXNzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciogZXZl
bnRMaXN0ZW5lcikKK3sKKyAgICBtX29uUHJvZ3Jlc3NMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7
Cit9CisKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
ciwgYm9vbCkKIHsKICAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZl
bnRMaXN0ZW5lcnMuZmluZChldmVudFR5cGUuaW1wbCgpKTsKQEAgLTUwMiw2ICs1MTMsNyBAQCB2
b2lkIFhNTEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KCkKICAgICBib29sIGhhZExvYWRlciA9
IG1fbG9hZGVyOwogCiAgICAgbV9hYm9ydGVkID0gdHJ1ZTsKKyAgICBtX3JlY2VpdmVkTGVuZ3Ro
ID0gMDsKIAogICAgIGlmIChoYWRMb2FkZXIpIHsKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgp
OwpAQCAtNzYzLDYgKzc3NSw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRh
KFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgfQogCiAg
ICAgaWYgKCFtX2Fib3J0ZWQpIHsKKyAgICAgICAgdXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNz
KGxlbik7CisKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gUmVjZWl2aW5nKQogICAgICAgICAgICAg
Y2hhbmdlU3RhdGUoUmVjZWl2aW5nKTsKICAgICAgICAgZWxzZQpAQCAtNzcxLDYgKzc4NSwyOSBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlcios
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZQogICAgIH0KIH0KIAordm9pZCBYTUxIdHRwUmVxdWVz
dDo6dXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNzKGludCBsZW4pCit7CisgICAgbG9uZyBsb25n
IGV4cGVjdGVkTGVuZ3RoID0gbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKwor
ICAgIG1fcmVjZWl2ZWRMZW5ndGggKz0gbGVuOworCisgICAgLy8gRklYTUU6IFdlIGFyZSBjYWxs
ZWQgdG9vIG9mdGVuICgzLTQgdGltZXMgbW9yZSB0aGF0IGZpcmVmb3gpIHNvIHdlIGhhdmUgYSBo
dWdlIHBlcmZvcm1hbmNlIGhpdAorCisgICAgUmVmUHRyPFByb2dyZXNzRXZlbnQ+IGV2dDsKKwor
ICAgIC8vIElmIHdlIGRvIG5vdCBoYXZlIHRoZSBpbmZvcm1hdGlvbiBvciBpdCBpcyBvZGQsIHNl
dCBsZW5ndGhDb21wdXRhYmxlIHRvIGZhbHNlLgorICAgIGlmICghZXhwZWN0ZWRMZW5ndGggfHwg
bV9yZWNlaXZlZExlbmd0aCA+IGV4cGVjdGVkTGVuZ3RoKQorICAgICAgICBldnQgPSBuZXcgUHJv
Z3Jlc3NFdmVudCgicHJvZ3Jlc3MiLCBmYWxzZSwgbV9yZWNlaXZlZExlbmd0aCwgZXhwZWN0ZWRM
ZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgZXZ0ID0gbmV3IFByb2dyZXNzRXZlbnQoInByb2dy
ZXNzIiwgdHJ1ZSwgbV9yZWNlaXZlZExlbmd0aCwgZXhwZWN0ZWRMZW5ndGgpOworCisgICAgaWYg
KG1fb25Qcm9ncmVzc0xpc3RlbmVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOwor
ICAgICAgICBldnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25Qcm9ncmVz
c0xpc3RlbmVyLT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9Cit9CisKIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmNhbmNlbFJlcXVlc3RzKERvY3VtZW50KiBtX2RvYykKIHsKICAg
ICBSZXF1ZXN0c1NldCogcmVxdWVzdHMgPSByZXF1ZXN0c0J5RG9jdW1lbnQoKS5nZXQobV9kb2Mp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggYTFjNzExOS4uN2QwZGY5NyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBvblJlYWR5
U3RhdGVDaGFuZ2VMaXN0ZW5lcigpIGNvbnN0OwogICAgIHZvaWQgc2V0T25Mb2FkTGlzdGVuZXIo
RXZlbnRMaXN0ZW5lciopOwogICAgIEV2ZW50TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRPblByb2dyZXNzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciopOworICAg
IEV2ZW50TGlzdGVuZXIqIG9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNvbnN0OwogCiAgICAgdHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0
ZW5lcnNNYXA7CkBAIC05OCw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJik7CiAKICAgICB2b2lkIHByb2Nlc3NTeW5jTG9hZFJlc3VsdHMoY29uc3Qg
VmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB1
cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3MoaW50IGxlbik7CiAKICAgICBTdHJpbmcgcmVzcG9u
c2VNSU1FVHlwZSgpIGNvbnN0OwogICAgIGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwpAQCAt
MTEzLDYgKzExNiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
blJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcjsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bkxvYWRMaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vblByb2dyZXNzTGlz
dGVuZXI7CiAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKIAogICAgIEtV
UkwgbV91cmw7CkBAIC0xNDAsNiArMTQ0LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZVhNTDsKIAogICAgIGJvb2wgbV9hYm9ydGVkOworCisgICAg
Ly8gVXNlZCBmb3Igb25wcm9ncmVzcyB0cmFja2luZworICAgIGxvbmcgbG9uZyBtX3JlY2VpdmVk
TGVuZ3RoOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="8796"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20563</attachid>
            <date>2008-04-15 12:22:00 -0700</date>
            <delta_ts>2008-04-20 14:19:16 -0700</delta_ts>
            <desc>Updated patch (include custom event + Ap&apos;s comments)</desc>
            <filename>bug13596-updated-CL.patch</filename>
            <type>text/plain</type>
            <size>33358</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOWRkNzgxLi5jNWZkNGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDQt
MTUgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDEzNTk2OiBJbXBsZW1l
bnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1cHBv
cnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2lu
Zm9PblByb2dyZXNzRXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMDgtMDQtMTUgIEFuYXRvbGkgUGFw
aXJvdnNraSAgPGFwYXBpcm92c2tpQG1hYy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgaHlh
dHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5m
b09uUHJvZ3Jlc3NFdmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjI2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1Rlc3QgY2FzZSBmb3IgYnVnIDEzNTk2OiBJbXBs
ZW1lbnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1
cHBvcnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24KKwor
WW91IHNob3VsZCBzZWUgdHlwZSwgYnViYmxlLCBjYW5jZWxhYmxlLCBldmVudFBoYXNlLCB0YXJn
ZXQgYW5kIGN1cnJlbnQgdGFyZ2V0IGZvciBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGNh
c2VzCisKK1N5bmNocm9ub3VzIGNhc2U6CitUeXBlOiBwcm9ncmVzcworQnViYmxlOiBmYWxzZQor
Q2FuY2VsYWJsZTogZmFsc2UKK0V2ZW50UGhhc2U6IDAKK1RhcmdldDogW29iamVjdCBYTUxIdHRw
UmVxdWVzdF0KK0N1cnJlbnQgdGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XQorCitBc3lu
Y2hyb25vdXMgY2FzZToKK1R5cGU6IHByb2dyZXNzCitCdWJibGU6IGZhbHNlCitDYW5jZWxhYmxl
OiBmYWxzZQorRXZlbnRQaGFzZTogMAorVGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XQor
Q3VycmVudCB0YXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVz
c0V2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwZDQ4ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
aW5mb09uUHJvZ3Jlc3NFdmVudC5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxodG1sPgorPGhlYWQv
PgorPGJvZHk+Cis8cD4gVGVzdCBjYXNlIGZvciBidWcgMTM1OTY6IEltcGxlbWVudCAub25wcm9n
cmVzcyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8gc3VwcG9ydCBwcm9ncmVz
c2l2ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbiA8L3A+Cis8cD4gWW91IHNo
b3VsZCBzZWUgdHlwZSwgYnViYmxlLCBjYW5jZWxhYmxlLCBldmVudFBoYXNlLCB0YXJnZXQgYW5k
IGN1cnJlbnQgdGFyZ2V0IGZvciBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIGNhc2VzIDwv
cD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIGxvZyAobXNnKQor
eworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bXNnKSk7CisgICAgaW5zZXJ0TmV3TGluZSgpOworfQorCitmdW5jdGlvbiBpbnNlcnROZXdMaW5l
KCkKK3sKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJyIikpOworfQorCitmdW5jdGlvbiBvblByb2dyZXNzKGUpIHsKKyAgICBsb2coIlR5cGU6
ICIgKyBlLnR5cGUpOworICAgIGxvZygiQnViYmxlOiAiICsgZS5idWJibGVzKTsKKyAgICBsb2co
IkNhbmNlbGFibGU6ICIgKyBlLmNhbmNlbGFibGUpOworICAgIGxvZygiRXZlbnRQaGFzZTogIiAr
IGUuZXZlbnRQaGFzZSk7CisgICAgbG9nKCJUYXJnZXQ6ICIgKyBlLnRhcmdldCk7CisgICAgbG9n
KCJDdXJyZW50IHRhcmdldDogIiArIGUuY3VycmVudFRhcmdldCk7CisgICAgZS5jdXJyZW50VGFy
Z2V0Lm9ucHJvZ3Jlc3MgPSBudWxsOworICAgIGlmIChzaG91bGROb3RpZnkgJiYgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIG9uRXJyb3IoZSkgeworICBhbGVydCgiRXJyb3IgIiArIGUu
dGFyZ2V0LnN0YXR1cyArICIgb2NjdXJyZWQgd2hpbGUgcmVjZWl2aW5nIHRoZSBkb2N1bWVudC4i
KTsKK30KKwordmFyIHNob3VsZE5vdGlmeSA9IGZhbHNlOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworbG9nKCJTeW5j
aHJvbm91cyBjYXNlOiIpOworCisvLyBUZXN0IHN5bmNocm9ub3VzCit2YXIgcmVxID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7CityZXEub25wcm9ncmVzcyA9IG9uUHJvZ3Jlc3M7CityZXEub3Blbigi
R0VUIiwgInJlc291cmNlcy8xMjUxLmh0bWwiLCBmYWxzZSk7CityZXEuc2VuZChudWxsKTsKKwor
aW5zZXJ0TmV3TGluZSgpOworbG9nKCJBc3luY2hyb25vdXMgY2FzZToiKTsKKworLy8gVGVzdCBh
c3luY2hyb25vdXMKK3ZhciByZXEyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CityZXEyLm9ucHJv
Z3Jlc3MgPSBvblByb2dyZXNzOworcmVxMi5vcGVuKCJHRVQiLCAicmVzb3VyY2VzLzEyNTEuaHRt
bCIsIHRydWUpOworc2hvdWxkTm90aWZ5ID0gdHJ1ZTsKK3JlcTIuc2VuZChudWxsKTsKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTM2ZTJkLi5iOWZlZGVmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisy
MDA4LTA0LTE1ICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAxMzU5Njog
SW1wbGVtZW50IC5vbnByb2dyZXNzIGhhbmRsZXIgb24gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0cyB0
byBzdXBwb3J0IHByb2dyZXNzaXZlIGRvd25sb2FkIGNvbnRlbnQgbGVuZ3RoIGluZm9ybWF0aW9u
LgorCisgICAgICAgIC0gQWRkIHRoZSBvbnByb2dyZXNzIHByb3BlcnR5IHRvIFhNTEh0dHBSZXF1
ZXN0IGFuZCB0aGUgbmVjZXNzYXJ5IGNhbGxzLgorCisgICAgICAgIC0gV2UgdXNlIGEgY3VzdG9t
IGV2ZW50IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCB0aGF0IGlzIGRlcml2ZWQgZnJvbSBQ
cm9ncmVzc0V2ZW50IChhcyBzcGVjaWZpZWQgYnkgdGhlIFhIUjIgc3BlY2lmaWNhdGlvbikKKyAg
ICAgICAgICBidXQgYWxzbyBpbXBsZW1lbnQgTFNQcm9ncmVzc0V2ZW50IGludGVyZmFjZSAodG8g
YmUgY29tcGxpYW50IHdpdGggRmlyZWZveCBldmVudCkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50Lmh0bWwKKworICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOiBBZGQgWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50IGluZm9ybWF0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6Z2V0VmFsdWVQcm9w
ZXJ0eSk6IEFkZGVkIG9ucHJvZ3Jlc3MgcHJvcGVydHkuCisgICAgICAgIChXZWJDb3JlOjpKU1hN
TEh0dHBSZXF1ZXN0OjpwdXRWYWx1ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6IEFkZGVk
IGlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVu
dDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQpOgorICAgICAgICAqIGRvbS9FdmVudC5o
OiBEaXR0by4KKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVudC5oOiBSZXBsYWNlZCAncHJpdmF0
ZScgYnkgJ3Byb3RlY3RlZCcgdG8gZW5hYmxlIGRlcml2YXRpb24uCisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvblBy
b2dyZXNzTGlzdGVuZXIpOiBvbnByb2dyZXNzIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0OjpzZXRPblByb2dyZXNzTGlzdGVuZXIpOiBvbnByb2dyZXNzIHNldHRlci4K
KyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KTogcmVzZXQg
bV9yZWNlaXZlZExlbmd0aCBvbiBhYm9ydC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YSk6IGFkZCB1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3MgY2Fs
bC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojp1cGRhdGVBbmREaXNwYXRjaE9u
UHJvZ3Jlc3MpOiBVc2VkIHRvIHVwZGF0ZSBvbnByb2dyZXNzCisgICAgICAgIGluZm9ybWF0aW9u
IGFuZCBkaXNwYXRjaCB0aGUgZXZlbnQuCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
aDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OlhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQ6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudDo6dG90YWxTaXplKToKKyAgICAgICAgVGhlIHR3byBwcmV2aW91cyBtZXRo
b2RzIGFyZSB1c2VkIGZvciBGaXJlZm94IGNvbXBhdGliaWxpdHkgYW5kIG1hcCB0byB0aGUKKyAg
ICAgICAgc2FtZSB2YWx1ZSBhcyB0aGUgUHJvZ3Jlc3NFdmVudCBtZXRob2RzIChidXQgdGhleSBh
cmUgZGVwcmVjYXRlZCBhbmQgZGlzcGxheQorICAgICAgICBhIHdhcm5pbmcpLgorCisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
Ojppc1Byb2dyZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50OjpsZW5ndGhDb21wdXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6bG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6dG90YWwpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsOiBBZGRlZC4KKwogMjAwOC0wNC0xNSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggY2UwZTVmOS4uMWZhOWI1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzM3LDYg
KzMzNyw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFZvaWRDYWxsYmFjayBcCiAgICAgV2hlZWxF
dmVudCBcCiAgICAgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24gXAorICAgIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudCBcCiAgICAgWE1MU2VyaWFsaXplciBcCiAgICAgWFBhdGhFdmFsdWF0b3Ig
XAogICAgIFhQYXRoRXhjZXB0aW9uIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGNiNGMwM2UuLmY4MGE0ODYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMzMwLDYgKzMzMCw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvSlNVSUV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNXaGVlbEV2ZW50LmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAgXAorCURl
cml2ZWRTb3VyY2VzL0pTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvSlNYTUxTZXJpYWxpemVyLmNwcAogCiBJRExfQklORElOR1MgKz0gIFwKQEAgLTQ2
MSw2ICs0NjIsNyBAQCBJRExfQklORElOR1MgKz0gIFwKIAlXZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
LmlkbCBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5LmlkbCBcCiAJV2ViQ29yZS94bWwv
RE9NUGFyc2VyLmlkbCBcCisJV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
LmlkbCBcCiAJV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIFwKIAlXZWJD
b3JlL3htbC9YTUxTZXJpYWxpemVyLmlkbAogCkBAIC05NzAsNiArOTcyLDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAJV2Vi
Q29yZS94bWwvRE9NUGFyc2VyLmNwcCBcCiAJV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
IFwKKwlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIFwKIAlXZWJD
b3JlL3htbC9YTUxTZXJpYWxpemVyLmNwcAogCiB3ZWJraXRndGtfaGVhZGVycyArPSBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCBj
MDI2ZDYwLi5hMTEwMmZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM5Niw2ICszOTYsNyBAQCBJRExfQklORElOR1MgKz0gXAog
ICAgIHBsdWdpbnMvTWltZVR5cGVBcnJheS5pZGwgXAogICAgIHhtbC9ET01QYXJzZXIuaWRsIFwK
ICAgICB4bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIFwKKyAgICB4bWwvWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmlkbCBcCiAgICAgeG1sL1hNTFNlcmlhbGl6ZXIuaWRsCiAKIApA
QCAtOTA2LDYgKzkwNyw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHhtbC9ET01QYXJzZXIuY3BwIFwK
ICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcCBcCisgICAgeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgXAogICAg
IHhtbC9YTUxTZXJpYWxpemVyLmNwcCBcCiAgICAgeG1sL1hQYXRoRXZhbHVhdG9yLmNwcCBcCiAg
ICAgeG1sL1hQYXRoRXhwcmVzc2lvbi5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggNzdiNjIyMi4uNTRmYzE2YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0yODE0LDYgKzI4MTQsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIg0K
KwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJL
aXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1hNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTWE1MU2VyaWFsaXplci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+
DQpAQCAtOTkyMSw2ICs5OTI5LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3Bw
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
eG1sXFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ceG1sXFhNTFNlcmlhbGl6ZXIuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggY2YyOTQ3ZS4uYWJmN2NmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM5MjQsNiArMzkyNCwxMCBAQAogCQlFNEFGRDAxMDBEQUYz
MzU1MDBGNUY1NUMgLyogU1ZHU01JTEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QUZEMDBBMERBRjMzNTQwMEY1RjU1QyAvKiBTVkdTTUlM
RWxlbWVudC5oICovOyB9OwogCQlFNEMyNzk1ODBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRD
Mjc5NTYwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmNwcCAqLzsgfTsKIAkJRTRDMjc5
NTkwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVu
ZGVyTWVkaWEuaCAqLzsgfTsKKwkJRjkxNkM0OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CisJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CisJCUY5RjBFRDc5MERCNTBDQTIwMEQx
NkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzYwREI1MENBMjAwRDE2REI5IC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CisJCUY5RjBFRDdBMERCNTBD
QTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRC
OSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRTRFRUZGQzgwRDM0
NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEVFRkZDNjBEMzQ1NTBDMDA0NjlBNTggLyog
SlNBdWRpb0NvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJRTRFRUZGQzkwRDM0NTUwQzAwNDY5QTU4
IC8qIEpTQXVkaW9Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTRFRUZGQzcwRDM0NTUwQzAwNDY5QTU4IC8qIEpTQXVkaW9Db25zdHJ1
Y3Rvci5oICovOyB9OwogCQlFRDA0OEFCQzA4MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFyZWFSZXNp
emVDb3JuZXIudGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRUQwNDhBQkIwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRp
ZmYgKi87IH07CkBAIC04MjI2LDYgKzgyMzAsMTEgQEAKIAkJRjUyM0QyNzkwMkRFNDNENzAxODYz
NUNBIC8qIFRleHRSZXNvdXJjZURlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFJlc291cmNlRGVjb2Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QzMDMw
MkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhbmdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMzA0MDJERTQ0NzYw
MTg2MzVDQSAvKiBSYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWU9
Ijxncm91cD4iOyB9OworCQlGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY5RjBFRDc2MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY5RjBF
RDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjUyM0QzMDkwMkRFNDQ3NjAxODYzNUNBIC8qIFhNTFRva2VuaXplci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBY
TUxUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QzMEEwMkRFNDQ3NjAxODYzNUNBIC8qIFhNTFRva2VuaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxUb2tlbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUY1ODc4NEYwMDJERTM3NTkwMUVBNDEyMiAvKiBDdXJzb3JNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDdXJzb3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwpAQCAtMTEwNjcsNiArMTEwNzYsOCBAQAogCQkJCTY1NjU4MUQ3MDlEMTUw
OEQwMDBFNjFENyAvKiBKU1hNTEh0dHBSZXF1ZXN0Lmx1dC5oICovLAogCQkJCUJDNjBEQTM3MEQy
QTMwMjgwMEI5OTE4RiAvKiBKU1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCAqLywKIAkJCQlC
QzYwREEzODBEMkEzMDI4MDBCOTkxOEYgLyogSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oICov
LAorCQkJCUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5jcHAgKi8sCisJCQkJRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8sCiAJCQkJMUFDRTUzRjQwQThEMTk0NzAwMjI5NDdE
IC8qIEpTWE1MU2VyaWFsaXplci5jcHAgKi8sCiAJCQkJMUFDRTUzRjUwQThEMTk0NzAwMjI5NDdE
IC8qIEpTWE1MU2VyaWFsaXplci5oICovLAogCQkJCTY1NjU4MUQ5MDlEMTUwOEQwMDBFNjFENyAv
KiBKU1hTTFRQcm9jZXNzb3IubHV0LmggKi8sCkBAIC0xMjMwMiw2ICsxMjMxMyw5IEBACiAJCQkJ
QkM3NzJDNDUwQzRFQjJDNjAwODMyODVGIC8qIFhNTEh0dHBSZXF1ZXN0LmggKi8sCiAJCQkJQkM2
MEQ5QzcwRDJBMjlFNTAwQjk5MThGIC8qIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggKi8sCiAJ
CQkJQkM2MEQ5QzgwRDJBMjlFNTAwQjk5MThGIC8qIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmlk
bCAqLywKKwkJCQlGOUYwRUQ3NjBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmNwcCAqLywKKwkJCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8sCisJCQkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5
IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8sCiAJCQkJMUFDRTUzRTQwQThE
MThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuY3BwICovLAogCQkJCTFBQ0U1M0U1MEE4RDE4
RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxpemVyLmggKi8sCiAJCQkJMUFDRTUzRTYwQThEMThFNzAw
MjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaWRsICovLApAQCAtMTQ4NDEsNiArMTQ4NTUsOCBAQAog
CQkJCUMwOTE1ODhCMERCNDIwOTIwMEU1NUFGNCAvKiBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMwOTE1ODhEMERCNDIwOTIwMEU1NUFGNCAvKiBKU0luc3Bl
Y3RvckNhbGxiYWNrV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzA5MTU4OEYwREI0MjA5
MjAwRTU1QUY0IC8qIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTY1MzMsNiAr
MTY1NDksOCBAQAogCQkJCUMwOTE1ODhBMERCNDIwOTIwMEU1NUFGNCAvKiBKU0luc3BlY3RlZE9i
amVjdFdyYXBwZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzA5MTU4OEMwREI0MjA5MjAwRTU1
QUY0IC8qIEpTSW5zcGVjdG9yQ2FsbGJhY2tXcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUMwOTE1ODhFMERCNDIwOTIwMEU1NUFGNCAvKiBKU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGOUYwRUQ3OTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY5MTZDNDhEMERC
NTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29y
ZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggNWM3MzM3MS4uYTI5MDAxNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wKQEAgLTMxMyw2ICszMTMsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmls
ZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNVSUV2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2hlZWxF
dmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uLmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
WE1MU2VyaWFsaXplci5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hQYXRo
RXZhbHVhdG9yLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWFBhdGhFeGNl
cHRpb24uY3BwCkBAIC04MTYsNiArODE3LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0
IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICB4bWwvRE9NUGFyc2Vy
LmNwcAogICAgICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jlc29sdmVyLmNwcAogICAgICAgICB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCisgICAgICAgIHhtbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwCiAgICAgICAgIHhtbC9YTUxTZXJpYWxpemVyLmNwcAogICAgICAgICB4bWwvWFBhdGhF
dmFsdWF0b3IuY3BwCiAgICAgICAgIHhtbC9YUGF0aEV4cHJlc3Npb24uY3BwCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAppbmRleCAyNzlkZTRhLi5kYjNmZWNjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJK
U1RleHRFdmVudC5oIgogI2luY2x1ZGUgIkpTVUlFdmVudC5oIgogI2luY2x1ZGUgIkpTV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5j
bHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJNdXRhdGlvbkV2ZW50LmgiCkBAIC00OCw2ICs0OSw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50
LmgiCiAjaW5jbHVkZSAiVUlFdmVudC5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNs
dWRlICJYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJranNfZXZlbnRz
LmgiCiAKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCkBAIC0xMTQsNiArMTE2LDggQEAgSlNWYWx1
ZSogdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50KiBldmVudCkKICAgICBlbHNlIGlmIChldmVu
dC0+aXNTdG9yYWdlRXZlbnQoKSkKICAgICAgICAgcmV0ID0gbmV3IEpTU3RvcmFnZUV2ZW50KEpT
U3RvcmFnZUV2ZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMpLCBzdGF0aWNfY2FzdDxTdG9yYWdlRXZl
bnQqPihldmVudCkpOwogI2VuZGlmCisgICAgZWxzZSBpZiAoZXZlbnQtPmlzWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50KCkpCisgICAgICAgIHJldCA9IG5ldyBKU1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudChKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFByb3RvdHlwZTo6c2VsZihl
eGVjKSwgc3RhdGljX2Nhc3Q8WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Kj4oZXZlbnQpKTsK
ICAgICBlbHNlCiAgICAgICAgIHJldCA9IG5ldyBKU0V2ZW50KEpTRXZlbnRQcm90b3R5cGU6OnNl
bGYoZXhlYyksIGV2ZW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hN
TEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggOWUwMDAwMS4uNTU5OGIzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3QuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1hNTEh0dHBS
ZXF1ZXN0OjpzX2luZm8gPSB7ICJYTUxIdHRwUmVxdWVzdCIsIDAsICZKU1hNTEh0dHBSZXF1CiAg
IHN0YXR1c1RleHQgICAgICAgICAgICBKU1hNTEh0dHBSZXF1ZXN0OjpTdGF0dXNUZXh0ICAgICAg
ICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIG9ucmVhZHlzdGF0ZWNoYW5nZSAgICBKU1hN
TEh0dHBSZXF1ZXN0OjpPbnJlYWR5c3RhdGVjaGFuZ2UgICAgICBEb250RGVsZXRlCiAgIG9ubG9h
ZCAgICAgICAgICAgICAgICBKU1hNTEh0dHBSZXF1ZXN0OjpPbmxvYWQgICAgICAgICAgICAgICAg
ICBEb250RGVsZXRlCisgIG9ucHJvZ3Jlc3MgICAgICAgICAgICBKU1hNTEh0dHBSZXF1ZXN0OjpP
bnByb2dyZXNzICAgICAgICAgICAgICBEb250RGVsZXRlCiBAZW5kCiAqLwogCkBAIC0xMzUsNiAr
MTM2LDExIEBAIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6OmdldFZhbHVlUHJvcGVydHkoRXhl
Y1N0YXRlKiBleGVjLCBpbnQgdG9rZW4pIGNvbnN0CiAgICAgICAgICAgICAgICAgaWYgKEpTT2Jq
ZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7
CisgICAgICAgIGNhc2UgT25wcm9ncmVzczoKKyAgICAgICAgICAgIGlmIChKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lcio+KG1faW1wbC0+b25Qcm9ncmVzc0xpc3RlbmVyKCkpKQorICAgICAgICAgICAgICAg
IGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOworICAgICAgICAgICAgcmV0dXJu
IGpzTnVsbCgpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtMTY4LDYgKzE3NCwxNiBAQCB2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6OnB1dFZhbHVlUHJv
cGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUqIHZhbAogICAgICAgICAg
ICAgbV9pbXBsLT5zZXRPbkxvYWRMaXN0ZW5lcih0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9y
Q3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgT25wcm9ncmVzczogeworICAgICAg
ICAgICAgRG9jdW1lbnQqIGRvYyA9IG1faW1wbC0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIGlm
ICghZG9jKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEZyYW1lKiBmcmFt
ZSA9IGRvYy0+ZnJhbWUoKTsKKyAgICAgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgbV9pbXBsLT5zZXRPblByb2dyZXNzTGlzdGVuZXIodG9K
U0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KHZhbHVlLCB0cnVlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuaAppbmRleCA0ZDYxOWY2Li5hMTlh
YzYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuaAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3QuaApAQCAtNDgsNyArNDgs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9CiAgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xh
c3NJbmZvIHNfaW5mbzsKLSAgICBlbnVtIHsgT25sb2FkLCBPbnJlYWR5c3RhdGVjaGFuZ2UsIFJl
YWR5U3RhdGUsIFJlc3BvbnNlVGV4dCwgUmVzcG9uc2VYTUwsIFN0YXR1cywKKyAgICBlbnVtIHsg
T25sb2FkLCBPbnByb2dyZXNzLCBPbnJlYWR5c3RhdGVjaGFuZ2UsIFJlYWR5U3RhdGUsIFJlc3Bv
bnNlVGV4dCwgUmVzcG9uc2VYTUwsIFN0YXR1cywKICAgICAgICAgU3RhdHVzVGV4dCwgQWJvcnQs
IEdldEFsbFJlc3BvbnNlSGVhZGVycywgR2V0UmVzcG9uc2VIZWFkZXIsIE9wZW4sIFNlbmQsIFNl
dFJlcXVlc3RIZWFkZXIsIE92ZXJyaWRlTUlNRVR5cGUsCiAgICAgICAgIEFkZEV2ZW50TGlzdGVu
ZXIsIFJlbW92ZUV2ZW50TGlzdGVuZXIsIERpc3BhdGNoRXZlbnQgfTsKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IDA3ZjY4
ZjQuLmYwYWM5OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9FdmVudC5jcHAKQEAgLTEzNCw2ICsxMzQsMTEgQEAgYm9vbCBFdmVudDo6aXNQcm9n
cmVzc0V2ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6Omlz
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVudDo6aXNTVkdab29tRXZlbnQoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50
LmgKaW5kZXggY2FhNjY0Ni4uOGM2MTBlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnQu
aAorKysgYi9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVyZmxvd0V2ZW50KCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBib29sIGlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3Q7CiAjaWYg
RU5BQkxFKFNWRykKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaCBiL1dlYkNv
cmUvZG9tL1Byb2dyZXNzRXZlbnQuaAppbmRleCBlMjE1MDkxLi5lZmQ3YTFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vUHJvZ3Jlc3NF
dmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgICAgIAotICAgIHByaXZhdGU6CisgICAgcHJvdGVjdGVkOgogICAgICAgICBib29s
IG1fbGVuZ3RoQ29tcHV0YWJsZTsKICAgICAgICAgdW5zaWduZWQgbV9sb2FkZWQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fdG90YWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYmMyN2YyOC4uYTA2
NmRkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3
ZWJraXQub3JnPgotICogIENvcHlyaWdodCAoQykgMjAwNyBKdWxpZW4gQ2hhZmZyYWl4IDxqdWxp
ZW4uY2hhZmZyYWl4QGdtYWlsLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSnVs
aWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5j
bHVkZSAia2pzX2JpbmRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg3LDExICsx
ODgsMjEgQEAgRXZlbnRMaXN0ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uTG9hZExpc3RlbmVyKCkg
Y29uc3QKICAgICByZXR1cm4gbV9vbkxvYWRMaXN0ZW5lci5nZXQoKTsKIH0KIAorRXZlbnRMaXN0
ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgpOworfQorCiB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZXRPbkxvYWRMaXN0ZW5lcihFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewog
ICAgIG1fb25Mb2FkTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwogfQogCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRPblByb2dyZXNzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5l
cikKK3sKKyAgICBtX29uUHJvZ3Jlc3NMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7Cit9CisKIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwgYm9vbCkK
IHsKICAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5l
cnMuZmluZChldmVudFR5cGUuaW1wbCgpKTsKQEAgLTQ5Niw2ICs1MDcsOSBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjppbnRlcm5hbEFib3J0KCkKIAogICAgIG1fYWJvcnRlZCA9IHRydWU7CiAKKyAg
ICAvLyBGSVhNRTogd2hlbiB3ZSBhZGQgdGhlIHN1cHBvcnQgZm9yIG11bHRpLXBhcnQgWEhSLCB3
ZSB3aWxsIGhhdmUgdG8gdGhpbmsgYmUgY2FyZWZ1bCB3aXRoIHRoaXMgaW5pdGlhbGl6YXRpb24u
CisgICAgbV9yZWNlaXZlZExlbmd0aCA9IDA7CisKICAgICBpZiAoaGFkTG9hZGVyKSB7CiAgICAg
ICAgIG1fbG9hZGVyLT5jYW5jZWwoKTsKICAgICAgICAgbV9sb2FkZXIgPSAwOwpAQCAtNzYxLDYg
Kzc3NSw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgfQogCiAgICAgaWYgKCFtX2Fi
b3J0ZWQpIHsKKyAgICAgICAgdXBkYXRlQW5kRGlzcGF0Y2hPblByb2dyZXNzKGxlbik7CisKICAg
ICAgICAgaWYgKG1fc3RhdGUgIT0gUmVjZWl2aW5nKQogICAgICAgICAgICAgY2hhbmdlU3RhdGUo
UmVjZWl2aW5nKTsKICAgICAgICAgZWxzZQpAQCAtNzY5LDYgKzc4NSwyNiBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZQogICAgIH0KIH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdDo6dXBkYXRlQW5k
RGlzcGF0Y2hPblByb2dyZXNzKHVuc2lnbmVkIGludCBsZW4pCit7CisgICAgbG9uZyBsb25nIGV4
cGVjdGVkTGVuZ3RoID0gbV9yZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKworICAg
IG1fcmVjZWl2ZWRMZW5ndGggKz0gbGVuOworCisgICAgLy8gRklYTUU6IFdlIGRpc3BhdGNoIHRo
ZSBldmVudCB0b28gb2Z0ZW4gZm9yIGJpZyBmaWxlcyAoMy00IHRpbWVzIG1vcmUgdGhhdCBGaXJl
Zm94KSByZXN1bHRpbmcgaW4gYSBodWdlIHBlcmZvcm1hbmNlIGhpdC4KKworICAgIFJlZlB0cjxY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ+IGV2dDsKKworICAgIC8vIElmIHdlIGRvIG5vdCBo
YXZlIHRoZSBpbmZvcm1hdGlvbiBvciBpdCBpcyBvZGQsIHNldCBsZW5ndGhDb21wdXRhYmxlIHRv
IGZhbHNlLgorICAgIGV2dCA9IG5ldyBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoInByb2dy
ZXNzIiwgZXhwZWN0ZWRMZW5ndGggJiYgbV9yZWNlaXZlZExlbmd0aCA8PSBleHBlY3RlZExlbmd0
aCwgbV9yZWNlaXZlZExlbmd0aCwgZXhwZWN0ZWRMZW5ndGgpOworCisgICAgaWYgKG1fb25Qcm9n
cmVzc0xpc3RlbmVyKSB7CisgICAgICAgIGV2dC0+c2V0VGFyZ2V0KHRoaXMpOworICAgICAgICBl
dnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CisgICAgICAgIG1fb25Qcm9ncmVzc0xpc3RlbmVy
LT5oYW5kbGVFdmVudChldnQuZ2V0KCksIGZhbHNlKTsKKyAgICB9Cit9CisKIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmNhbmNlbFJlcXVlc3RzKERvY3VtZW50KiBtX2RvYykKIHsKICAgICBSZXF1ZXN0
c1NldCogcmVxdWVzdHMgPSByZXF1ZXN0c0J5RG9jdW1lbnQoKS5nZXQobV9kb2MpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKaW5kZXggNjE2MzAxMi4uOTRkMWMwNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC02
Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBvblJlYWR5U3RhdGVDaGFu
Z2VMaXN0ZW5lcigpIGNvbnN0OwogICAgIHZvaWQgc2V0T25Mb2FkTGlzdGVuZXIoRXZlbnRMaXN0
ZW5lciopOwogICAgIEV2ZW50TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRPblByb2dyZXNzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciopOworICAgIEV2ZW50TGlz
dGVuZXIqIG9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0b3I7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBMaXN0ZW5lclZlY3Rvcj4gRXZlbnRMaXN0ZW5lcnNNYXA7
CkBAIC05OCw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENh
bmNlbGxhdGlvbihTdWJyZXNvdXJjZUxvYWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJik7CiAKICAgICB2b2lkIHByb2Nlc3NTeW5jTG9hZFJlc3VsdHMoY29uc3QgVmVjdG9yPGNo
YXI+JiBkYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB1cGRhdGVBbmRE
aXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbik7CiAKICAgICBTdHJpbmcgcmVzcG9u
c2VNSU1FVHlwZSgpIGNvbnN0OwogICAgIGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwpAQCAt
MTEzLDYgKzExNiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
blJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcjsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9v
bkxvYWRMaXN0ZW5lcjsKKyAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vblByb2dyZXNzTGlz
dGVuZXI7CiAgICAgRXZlbnRMaXN0ZW5lcnNNYXAgbV9ldmVudExpc3RlbmVyczsKIAogICAgIEtV
UkwgbV91cmw7CkBAIC0xNDEsNiArMTQ1LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0
cjxEb2N1bWVudD4gbV9yZXNwb25zZVhNTDsKIAogICAgIGJvb2wgbV9hYm9ydGVkOworCisgICAg
Ly8gVXNlZCBmb3Igb25wcm9ncmVzcyB0cmFja2luZworICAgIGxvbmcgbG9uZyBtX3JlY2VpdmVk
TGVuZ3RoOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYmQ0OTdjYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggSnVsaWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50OjpYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQoKQorICAgIDogUHJvZ3Jlc3NFdmVudCgpCit7Cit9CisKK1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb2Fk
ZWQsIHVuc2lnbmVkIHRvdGFsKQorICAgIDogUHJvZ3Jlc3NFdmVudCh0eXBlLCBsZW5ndGhDb21w
dXRhYmxlLCBsb2FkZWQsIHRvdGFsKQoreworfQorCit1bnNpZ25lZCBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQ6OnBvc2l0aW9uKCkKK3sKKyAgICBMT0coRXZlbnRzLCAiWG1sSHR0cFJlcXVl
c3QgcHJvZ3Jlc3MgZXZlbnQgcG9zaXRpb24oKSBpcyBkZXByZWNhdGVkLCB0aGUgUHJvZ3Jlc3NF
dmVudCBpbnRlcmZhY2Ugc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuIik7CisKKyAgICAvLyBGSVhN
RTogSWYgbGVuZ3RoQ29tcHV0YWJsZSBpcyBmYWxzZSwgd2hhdCBzaG91bGQgd2UgcmV0dXJuPwor
ICAgIHJldHVybiBtX2xvYWRlZDsKK30KKwordW5zaWduZWQgWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50Ojp0b3RhbFNpemUoKQoreworICAgIExPRyhFdmVudHMsICJYbWxIdHRwUmVxdWVzdCBw
cm9ncmVzcyBldmVudCB0b3RhbFNpemUoKSBpcyBkZXByZWNhdGVkLCB0aGUgUHJvZ3Jlc3NFdmVu
dCBpbnRlcmZhY2Ugc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuIik7CisKKyAgICAvLyBGSVhNRTog
SWYgbGVuZ3RoQ29tcHV0YWJsZSBpcyBmYWxzZSwgd2hhdCBzaG91bGQgd2UgcmV0dXJuPworICAg
IHJldHVybiBtX3RvdGFsOworfQorCit9IC8vIE5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA0ZjQ1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCBKdWxpZW4gQ2hhZmZyYWl4IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+LiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
X2gKKyNkZWZpbmUgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50X2gKKworI2luY2x1ZGUgIlBy
b2dyZXNzRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50IDogcHVibGljIFByb2dyZXNzRXZlbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1bnNpZ25lZCBsb2FkZWQsIHVuc2lnbmVk
IHRvdGFsKTsKKyAgICAgICAgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCk7CisKKyAgICAg
ICAgdmlydHVhbCBib29sIGlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8vIEF2b2lkIG1hdGNoaW5nIFByb2dyZXNzRXZlbnQu
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorCisgICAgICAgIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGVuZ3RoQ29tcHV0YWJsZTsgfQorICAgICAgICB1bnNpZ25lZCBsb2FkZWQoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRlZDsgfQorICAgICAgICB1bnNpZ25lZCB0b3RhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWw7IH0KKworICAgICAgICAvLyBUaG9zZSAyIG1ldGhvZHMgYXJlIHRvIGJlIGNv
bXBhdGlibGUgd2l0aCBGaXJlZm94IGFuZCBhcmUgb25seSBhIHdyYXBwZXIgb24gdG9wIG9mIHRo
ZSByZWFsIGltcGxlbWVudGF0aW9uLgorICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbigpOworICAg
ICAgICB1bnNpZ25lZCB0b3RhbFNpemUoKTsKKworICAgIH07IC8vIGNsYXNzIFhNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudAorCit9IC8vIE5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRl
OTY5MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgLy8gV2Ug
c2hvdWxkIGFsc28gaW5oZXJpdCBmcm9tIExTUHJvZ3Jlc3NFdmVudCB3aGVuIHRoZSBpZGwgaXMg
YWRkZWQuCisgICAgXSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQgOiBQcm9ncmVzc0V2ZW50
IHsKKyAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgcG9zaXRpb247
CisgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgIHRvdGFsU2l6ZTsK
KyAgICB9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20708</attachid>
            <date>2008-04-20 14:19:16 -0700</date>
            <delta_ts>2008-04-21 02:02:31 -0700</delta_ts>
            <desc>Updated after XMLHttpRequest changes and IDL introduction</desc>
            <filename>bug13596-updated-CL.patch</filename>
            <type>text/plain</type>
            <size>32271</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmZWRmY2IyLi45YzRlMzc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDQt
MjAgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDEzNTk2OiBJbXBsZW1l
bnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1cHBv
cnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2lu
Zm9PblByb2dyZXNzRXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMDgtMDQtMTkgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSB3aW5kb3ctcHJvcGVydGll
cyB0byBhZGQgdGhlIHByb2ZpbGVyIGFuZCBmaXggYSBsYXlvdXQgdGVzdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5m
b09uUHJvZ3Jlc3NFdmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjgyMjY4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMCBAQAorVGVzdCBjYXNlIGZvciBidWcgMTM1OTY6IEltcGxlbWVudCAub25wcm9ncmVz
cyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8gc3VwcG9ydCBwcm9ncmVzc2l2
ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbgorCitZb3Ugc2hvdWxkIHNlZSB0
eXBlLCBidWJibGUsIGNhbmNlbGFibGUsIGV2ZW50UGhhc2UsIHRhcmdldCBhbmQgY3VycmVudCB0
YXJnZXQgZm9yIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgY2FzZXMKKworU3luY2hyb25v
dXMgY2FzZToKK1R5cGU6IHByb2dyZXNzCitCdWJibGU6IGZhbHNlCitDYW5jZWxhYmxlOiBmYWxz
ZQorRXZlbnRQaGFzZTogMAorVGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1ZXN0XQorQ3VycmVu
dCB0YXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCisKK0FzeW5jaHJvbm91cyBjYXNlOgor
VHlwZTogcHJvZ3Jlc3MKK0J1YmJsZTogZmFsc2UKK0NhbmNlbGFibGU6IGZhbHNlCitFdmVudFBo
YXNlOiAwCitUYXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCitDdXJyZW50IHRhcmdldDog
W29iamVjdCBYTUxIdHRwUmVxdWVzdF0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODBkNDhlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2
ZW50Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZC8+Cis8Ym9keT4KKzxwPiBU
ZXN0IGNhc2UgZm9yIGJ1ZyAxMzU5NjogSW1wbGVtZW50IC5vbnByb2dyZXNzIGhhbmRsZXIgb24g
WE1MSHR0cFJlcXVlc3Qgb2JqZWN0cyB0byBzdXBwb3J0IHByb2dyZXNzaXZlIGRvd25sb2FkIGNv
bnRlbnQgbGVuZ3RoIGluZm9ybWF0aW9uIDwvcD4KKzxwPiBZb3Ugc2hvdWxkIHNlZSB0eXBlLCBi
dWJibGUsIGNhbmNlbGFibGUsIGV2ZW50UGhhc2UsIHRhcmdldCBhbmQgY3VycmVudCB0YXJnZXQg
Zm9yIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgY2FzZXMgPC9wPgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9nIChtc2cpCit7CisgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKKyAgICBpbnNl
cnROZXdMaW5lKCk7Cit9CisKK2Z1bmN0aW9uIGluc2VydE5ld0xpbmUoKQoreworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cit9CisK
K2Z1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgeworICAgIGxvZygiVHlwZTogIiArIGUudHlwZSk7Cisg
ICAgbG9nKCJCdWJibGU6ICIgKyBlLmJ1YmJsZXMpOworICAgIGxvZygiQ2FuY2VsYWJsZTogIiAr
IGUuY2FuY2VsYWJsZSk7CisgICAgbG9nKCJFdmVudFBoYXNlOiAiICsgZS5ldmVudFBoYXNlKTsK
KyAgICBsb2coIlRhcmdldDogIiArIGUudGFyZ2V0KTsKKyAgICBsb2coIkN1cnJlbnQgdGFyZ2V0
OiAiICsgZS5jdXJyZW50VGFyZ2V0KTsKKyAgICBlLmN1cnJlbnRUYXJnZXQub25wcm9ncmVzcyA9
IG51bGw7CisgICAgaWYgKHNob3VsZE5vdGlmeSAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVu
Y3Rpb24gb25FcnJvcihlKSB7CisgIGFsZXJ0KCJFcnJvciAiICsgZS50YXJnZXQuc3RhdHVzICsg
IiBvY2N1cnJlZCB3aGlsZSByZWNlaXZpbmcgdGhlIGRvY3VtZW50LiIpOworfQorCit2YXIgc2hv
dWxkTm90aWZ5ID0gZmFsc2U7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitsb2coIlN5bmNocm9ub3VzIGNhc2U6Iik7
CisKKy8vIFRlc3Qgc3luY2hyb25vdXMKK3ZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsK
K3JlcS5vbnByb2dyZXNzID0gb25Qcm9ncmVzczsKK3JlcS5vcGVuKCJHRVQiLCAicmVzb3VyY2Vz
LzEyNTEuaHRtbCIsIGZhbHNlKTsKK3JlcS5zZW5kKG51bGwpOworCitpbnNlcnROZXdMaW5lKCk7
Citsb2coIkFzeW5jaHJvbm91cyBjYXNlOiIpOworCisvLyBUZXN0IGFzeW5jaHJvbm91cwordmFy
IHJlcTIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKK3JlcTIub25wcm9ncmVzcyA9IG9uUHJvZ3Jl
c3M7CityZXEyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvMTI1MS5odG1sIiwgdHJ1ZSk7CitzaG91
bGROb3RpZnkgPSB0cnVlOworcmVxMi5zZW5kKG51bGwpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGYzZDQ2ZDkuLmNiYmI4ODYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMDgtMDQtMjAgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDEzNTk2OiBJbXBsZW1lbnQgLm9ucHJv
Z3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1cHBvcnQKKyAgICAg
ICAgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgLSBBZGQgdGhlIG9ucHJvZ3Jlc3MgcHJvcGVydHkgdG8gWE1MSHR0cFJlcXVlc3QgYW5k
IHRoZSBuZWNlc3NhcnkgY2FsbHMuCisKKyAgICAgICAgLSBXZSB1c2UgYSBjdXN0b20gZXZlbnQg
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50IHRoYXQgaXMgZGVyaXZlZCBmcm9tIFByb2dyZXNz
RXZlbnQKKyAgICAgICAgIChhcyBzcGVjaWZpZWQgYnkgdGhlIFhIUjIgc3BlY2lmaWNhdGlvbikg
YnV0IGFsc28gaW1wbGVtZW50IExTUHJvZ3Jlc3NFdmVudCBpbnRlcmZhY2UKKyAgICAgICAgICh0
byBiZSBjb21wbGlhbnQgd2l0aCBGaXJlZm94IGV2ZW50KS4KKworICAgICAgICBUZXN0OiBodHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQuaHRtbAorCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBS
ZXF1ZXN0OjptYXJrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9ucHJv
Z3Jlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2V0T25wcm9ncmVz
cyk6CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpp
c1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50Lmg6Cisg
ICAgICAgICogZG9tL1Byb2dyZXNzRXZlbnQuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Om9uUHJvZ3Jlc3NMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0T25Mb2FkTGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldE9uUHJvZ3Jlc3NMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVz
cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQ6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6dG90YWxTaXplKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OmlzUHJvZ3Jl
c3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6
Omxlbmd0aENvbXB1dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50Ojpsb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50Ojp0b3RhbCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5pZGw6IEFkZGVkLgorCiAyMDA4LTA0LTE5ICBBbHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGI3
ZTQ5YTEuLjRmMjU2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTM0MCw2ICszNDAsNyBAQCBET01f
Q0xBU1NFUyA9IFwKICAgICBXaGVlbEV2ZW50IFwKICAgICBYTUxIdHRwUmVxdWVzdCBcCiAgICAg
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24gXAorICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dCBcCiAgICAgWE1MU2VyaWFsaXplciBcCiAgICAgWFBhdGhFdmFsdWF0b3IgXAogICAgIFhQYXRo
RXhjZXB0aW9uIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IDg4NTkzZWYuLjUyZDljZTYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzMyLDYg
KzMzMiw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvSlNX
aGVlbEV2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNYTUxIdHRwUmVxdWVzdC5jcHAgXAog
CURlcml2ZWRTb3VyY2VzL0pTWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9KU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL0pTWE1MU2VyaWFsaXplci5jcHAKIAogSURMX0JJTkRJTkdTICs9ICBcCkBAIC00NjQsNiAr
NDY1LDcgQEAgSURMX0JJTkRJTkdTICs9ICBcCiAJV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkFycmF5
LmlkbCBcCiAJV2ViQ29yZS94bWwvRE9NUGFyc2VyLmlkbCBcCiAJV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaWRsIFwKKwlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aWRsIFwKIAlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5pZGwgXAogCVdlYkNv
cmUveG1sL1hNTFNlcmlhbGl6ZXIuaWRsCiAKQEAgLTk3Niw2ICs5NzgsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIFwKIAlXZWJD
b3JlL3htbC9ET01QYXJzZXIuY3BwIFwKIAlXZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAg
XAorCVdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgXAogCVdlYkNv
cmUveG1sL1hNTFNlcmlhbGl6ZXIuY3BwCiAKIHdlYmtpdGd0a19oZWFkZXJzICs9IFwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDFk
ZmI2MzYuLjczNTE1OWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtNDAxLDYgKzQwMSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAg
ICAgeG1sL0RPTVBhcnNlci5pZGwgXAogICAgIHhtbC9YTUxIdHRwUmVxdWVzdC5pZGwgXAogICAg
IHhtbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5pZGwgXAorICAgIHhtbC9YTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaWRsIFwKICAgICB4bWwvWE1MU2VyaWFsaXplci5pZGwKIAogCkBAIC05
MTQsNiArOTE1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgeG1sL0RPTVBhcnNlci5jcHAgXAogICAg
IHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwIFwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwIFwKKyAgICB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBcCiAgICAgeG1s
L1hNTFNlcmlhbGl6ZXIuY3BwIFwKICAgICB4bWwvWFBhdGhFdmFsdWF0b3IuY3BwIFwKICAgICB4
bWwvWFBhdGhFeHByZXNzaW9uLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCBmYTk2Y2E2Li5mMTBmMmVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKQEAgLTI4MzAsNiArMjgzMCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiDQorCQkJ
CT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91
dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNYTUxTZXJpYWxpemVyLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBA
IC0xMDAxMCw2ICsxMDAxOCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxcWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHht
bFxYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHhtbFxYTUxTZXJpYWxpemVyLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGMzNzM0ZWUuLmUyZTU3NzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zOTQ4LDYgKzM5NDgsMTAgQEAKIAkJRTRBRkQwMTAwREFGMzM1
NTAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNEFGRDAwQTBEQUYzMzU0MDBGNUY1NUMgLyogU1ZHU01JTEVs
ZW1lbnQuaCAqLzsgfTsKIAkJRTRDMjc5NTgwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU2MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5jcHAgKi87IH07CiAJCUU0QzI3OTU5
MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRl
ck1lZGlhLmggKi87IH07CisJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuY3BwICovOyB9OworCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyog
SlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQlGOUYwRUQ3OTBEQjUwQ0EyMDBEMTZE
QjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc2MERCNTBDQTIwMEQxNkRCOSAvKiBY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OworCQlGOUYwRUQ3QTBEQjUwQ0Ey
MDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkg
LyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUU0RUVGRkM4MEQzNDU1
MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRFRUZGQzYwRDM0NTUwQzAwNDY5QTU4IC8qIEpT
QXVkaW9Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCUU0RUVGRkM5MEQzNDU1MEMwMDQ2OUE1OCAv
KiBKU0F1ZGlvQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0RUVGRkM3MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0
b3IuaCAqLzsgfTsKIAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3IC8qIHRleHRBcmVhUmVzaXpl
Q29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZm
ICovOyB9OwpAQCAtODI3NCw2ICs4Mjc4LDExIEBACiAJCUY1MjNEMjc5MDJERTQzRDcwMTg2MzVD
QSAvKiBUZXh0UmVzb3VyY2VEZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRSZXNvdXJjZURlY29kZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1MjNEMzAzMDJE
RTQ0NzYwMTg2MzVDQSAvKiBSYW5nZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYW5nZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIzRDMwNDAyREU0NDc2MDE4
NjM1Q0EgLyogUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CisJCUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlPSI8
Z3JvdXA+IjsgfTsKKwkJRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGOUYwRUQ3NjBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGOUYwRUQ3
NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5
IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY1MjNEMzA5MDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxUb2tlbml6ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1M
VG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUY1MjNEMzBBMDJERTQ0NzYwMTg2MzVDQSAvKiBYTUxUb2tlbml6ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWE1M
VG9rZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlGNTg3ODRGMDAyREUzNzU5MDFFQTQxMjIgLyogQ3Vyc29yTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
Q3Vyc29yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTExMTQ3LDYgKzExMTU2LDggQEAKIAkJCQlCQzM0OEJEMjBEQjdGODA0
MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovLAogCQkJCUJDNjBEQTM3MEQyQTMwMjgw
MEI5OTE4RiAvKiBKU1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCAqLywKIAkJCQlCQzYwREEz
ODBEMkEzMDI4MDBCOTkxOEYgLyogSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oICovLAorCQkJ
CUY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5jcHAgKi8sCisJCQkJRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50LmggKi8sCiAJCQkJMUFDRTUzRjQwQThEMTk0NzAwMjI5NDdEIC8qIEpT
WE1MU2VyaWFsaXplci5jcHAgKi8sCiAJCQkJMUFDRTUzRjUwQThEMTk0NzAwMjI5NDdEIC8qIEpT
WE1MU2VyaWFsaXplci5oICovLAogCQkJCTY1NjU4MUQ5MDlEMTUwOEQwMDBFNjFENyAvKiBKU1hT
TFRQcm9jZXNzb3IubHV0LmggKi8sCkBAIC0xMjM4OCw2ICsxMjM5OSw5IEBACiAJCQkJQkMzNDhC
QTcwREI3RjFCODAwNEFCQUI5IC8qIFhNTEh0dHBSZXF1ZXN0LmlkbCAqLywKIAkJCQlCQzYwRDlD
NzBEMkEyOUU1MDBCOTkxOEYgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCAqLywKIAkJCQlC
QzYwRDlDODBEMkEyOUU1MDBCOTkxOEYgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsICov
LAorCQkJCUY5RjBFRDc2MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuY3BwICovLAorCQkJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCAqLywKKwkJCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyog
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLywKIAkJCQkxQUNFNTNFNDBBOEQxOEU3
MDAyMjk0N0QgLyogWE1MU2VyaWFsaXplci5jcHAgKi8sCiAJCQkJMUFDRTUzRTUwQThEMThFNzAw
MjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIuaCAqLywKIAkJCQkxQUNFNTNFNjBBOEQxOEU3MDAyMjk0
N0QgLyogWE1MU2VyaWFsaXplci5pZGwgKi8sCkBAIC0xNDkzOCw2ICsxNDk1Miw4IEBACiAJCQkJ
NTE0QjQ5REYwREI2RDZCNjAwMUMzNzcwIC8qIFNlc3Npb25TdG9yYWdlQXJlYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4QkVBMERCODAzNTQwMDRBQkFCOSAvKiBKU1hNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUY5RjBFRDdBMERCNTBD
QTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNjY0NSw2ICsxNjY2MSw4IEBACiAJCQkJQkMz
NDhCQkUwREI3RjUzMTAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMzNDhCRDMwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzNDhCRTkwREI4MDM1NDAwNEFCQUI5IC8qIEpT
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGOUYwRUQ3
OTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggMjFj
ZDRjMy4uMmQ1MDViYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysr
IGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTMxOCw2ICszMTgsNyBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXaGVlbEV2ZW50LmNwcAogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTWE1MSHR0cFJlcXVlc3QuY3BwCiAgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAK
ICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hNTFNlcmlhbGl6ZXIuY3BwCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNYUGF0aEV2YWx1YXRvci5jcHAKICAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1hQYXRoRXhjZXB0aW9uLmNwcApAQCAtODI4LDYgKzgy
OSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVp
bGQgV2ViQ29yZS4KICAgICAgICAgeG1sL0RPTVBhcnNlci5jcHAKICAgICAgICAgeG1sL05hdGl2
ZVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorICAg
ICAgICB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcAogICAgICAgICB4bWwvWE1M
U2VyaWFsaXplci5jcHAKICAgICAgICAgeG1sL1hQYXRoRXZhbHVhdG9yLmNwcAogICAgICAgICB4
bWwvWFBhdGhFeHByZXNzaW9uLmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAK
aW5kZXggMjc5ZGU0YS4uZGIzZmVjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20u
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNUZXh0RXZlbnQuaCIKICNpbmNsdWRl
ICJKU1VJRXZlbnQuaCIKICNpbmNsdWRlICJKU1doZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJKU1hN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgpAQCAt
NDgsNiArNDksNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlVJRXZlbnQu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAia2pzX2V2ZW50cy5oIgogCiAjaWYgRU5BQkxFKERPTV9T
VE9SQUdFKQpAQCAtMTE0LDYgKzExNiw4IEBAIEpTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVj
LCBFdmVudCogZXZlbnQpCiAgICAgZWxzZSBpZiAoZXZlbnQtPmlzU3RvcmFnZUV2ZW50KCkpCiAg
ICAgICAgIHJldCA9IG5ldyBKU1N0b3JhZ2VFdmVudChKU1N0b3JhZ2VFdmVudFByb3RvdHlwZTo6
c2VsZihleGVjKSwgc3RhdGljX2Nhc3Q8U3RvcmFnZUV2ZW50Kj4oZXZlbnQpKTsKICNlbmRpZgor
ICAgIGVsc2UgaWYgKGV2ZW50LT5pc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpKQorICAg
ICAgICByZXQgPSBuZXcgSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnRQcm90b3R5cGU6OnNlbGYoZXhlYyksIHN0YXRpY19jYXN0PFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCo+KGV2ZW50KSk7CiAgICAgZWxzZQogICAgICAgICByZXQg
PSBuZXcgSlNFdmVudChKU0V2ZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMpLCBldmVudCk7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IGJk
OTcyOGMuLmE0MjkxZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcApAQCAtNTUsNiArNTUsOSBAQCB2b2lkIEpTWE1MSHR0cFJlcXVlc3Q6Om1h
cmsoKQogICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25Mb2Fk
TGlzdGVuZXIoKSkpCiAgICAgICAgIG9uTG9hZExpc3RlbmVyLT5tYXJrKCk7CiAgICAgCisgICAg
aWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvblByb2dyZXNzTGlzdGVuZXIgPSBzdGF0
aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25Qcm9ncmVzc0xp
c3RlbmVyKCkpKQorICAgICAgICBvblByb2dyZXNzTGlzdGVuZXItPm1hcmsoKTsKKyAgICAKICAg
ICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0OjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVy
c01hcDsKICAgICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0OjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5l
clZlY3RvcjsKICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2ltcGwt
PmV2ZW50TGlzdGVuZXJzKCk7CkBAIC05OCw2ICsxMDEsMjIgQEAgdm9pZCBKU1hNTEh0dHBSZXF1
ZXN0OjpzZXRPbmxvYWQoRXhlY1N0YXRlKiwgSlNWYWx1ZSogdmFsdWUpCiAgICAgfQogfQogCitK
U1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbnByb2dyZXNzKEV4ZWNTdGF0ZSopIGNvbnN0Cit7
CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vblByb2dyZXNzTGlzdGVu
ZXIoKSkpCisgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlz
dGVuZXJPYmooKSkKKyAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKKyAgICByZXR1cm4g
anNOdWxsKCk7Cit9CisKK3ZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25wcm9ncmVzcyhFeGVj
U3RhdGUqLCBKU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0g
aW1wbCgpLT5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVu
dC0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGltcGwoKS0+c2V0T25Qcm9ncmVzc0xpc3RlbmVyKHRv
SlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cih2YWx1ZSwgdHJ1ZSkpOworICAgIH0KK30KKwogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogSlNWYWx1
ZSogSlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFy
Z3MpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKaW5kZXggMDdmNjhmNC4uZjBhYzk5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTM0LDYgKzEzNCwxMSBA
QCBib29sIEV2ZW50Ojppc1Byb2dyZXNzRXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorYm9vbCBFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdAor
eworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2lmIEVOQUJMRShTVkcpCiBib29sIEV2ZW50Ojpp
c1NWR1pvb21FdmVudCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudC5o
IGIvV2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCBjYWE2NjQ2Li44YzYxMGUwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50LmgKQEAgLTEwOCw2
ICsxMDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Jl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc092
ZXJmbG93RXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NFdmVu
dCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQoKSBjb25zdDsKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
Vkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUHJv
Z3Jlc3NFdmVudC5oIGIvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCmluZGV4IGUyMTUwOTEu
LmVmZDdhMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaAorKysgYi9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgCi0gICAgcHJpdmF0ZToKKyAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIGJvb2wgbV9sZW5ndGhDb21wdXRhYmxlOwogICAgICAgICB1bnNpZ25l
ZCBtX2xvYWRlZDsKICAgICAgICAgdW5zaWduZWQgbV90b3RhbDsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAppbmRleCA1YzZkYmEzLi4zOTVhMzY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEFsZXhl
eSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IEp1
bGllbiBDaGFmZnJhaXggPGp1bGllbi5jaGFmZnJhaXhAZ21haWwuY29tPgorICogIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCBKdWxpZW4gQ2hhZmZyYWl4IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiU3VicmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJranNfYmluZGluZy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xODksMTEgKzE5MCwyMSBAQCBFdmVudExpc3RlbmVyKiBYTUxIdHRwUmVxdWVz
dDo6b25Mb2FkTGlzdGVuZXIoKSBjb25zdAogICAgIHJldHVybiBtX29uTG9hZExpc3RlbmVyLmdl
dCgpOwogfQogCitFdmVudExpc3RlbmVyKiBYTUxIdHRwUmVxdWVzdDo6b25Qcm9ncmVzc0xpc3Rl
bmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vblByb2dyZXNzTGlzdGVuZXIuZ2V0KCk7Cit9
CisKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldE9uTG9hZExpc3RlbmVyKEV2ZW50TGlzdGVuZXIq
IGV2ZW50TGlzdGVuZXIpCiB7CiAgICAgbV9vbkxvYWRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7
CiB9CiAKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldE9uUHJvZ3Jlc3NMaXN0ZW5lcihFdmVudExp
c3RlbmVyKiBldmVudExpc3RlbmVyKQoreworICAgIG1fb25Qcm9ncmVzc0xpc3RlbmVyID0gZXZl
bnRMaXN0ZW5lcjsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBl
dmVudExpc3RlbmVyLCBib29sKQogewogICAgIEV2ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBp
dGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50VHlwZS5pbXBsKCkpOwpAQCAtNDk4LDYg
KzUwOSw5IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAgICAgbV9h
Ym9ydGVkID0gdHJ1ZTsKIAorICAgIC8vIEZJWE1FOiB3aGVuIHdlIGFkZCB0aGUgc3VwcG9ydCBm
b3IgbXVsdGktcGFydCBYSFIsIHdlIHdpbGwgaGF2ZSB0byB0aGluayBiZSBjYXJlZnVsIHdpdGgg
dGhpcyBpbml0aWFsaXphdGlvbi4KKyAgICBtX3JlY2VpdmVkTGVuZ3RoID0gMDsKKwogICAgIGlm
IChoYWRMb2FkZXIpIHsKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogICAgICAgICBtX2xv
YWRlciA9IDA7CkBAIC03NjMsNiArNzc3LDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoU3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGUKICAg
ICB9CiAKICAgICBpZiAoIW1fYWJvcnRlZCkgeworICAgICAgICB1cGRhdGVBbmREaXNwYXRjaE9u
UHJvZ3Jlc3MobGVuKTsKKwogICAgICAgICBpZiAobV9zdGF0ZSAhPSBSZWNlaXZpbmcpCiAgICAg
ICAgICAgICBjaGFuZ2VTdGF0ZShSZWNlaXZpbmcpOwogICAgICAgICBlbHNlCkBAIC03NzEsNiAr
Nzg3LDI2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNl
TG9hZGVyKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgfQogfQogCit2b2lkIFhNTEh0
dHBSZXF1ZXN0Ojp1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbikK
K3sKKyAgICBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGggPSBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpOworCisgICAgbV9yZWNlaXZlZExlbmd0aCArPSBsZW47CisKKyAgICAvLyBG
SVhNRTogV2UgZGlzcGF0Y2ggdGhlIGV2ZW50IHRvbyBvZnRlbiBmb3IgYmlnIGZpbGVzICgzLTQg
dGltZXMgbW9yZSB0aGF0IEZpcmVmb3gpIHJlc3VsdGluZyBpbiBhIGh1Z2UgcGVyZm9ybWFuY2Ug
aGl0LgorCisgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudD4gZXZ0OworCisg
ICAgLy8gSWYgd2UgZG8gbm90IGhhdmUgdGhlIGluZm9ybWF0aW9uIG9yIGl0IGlzIG9kZCwgc2V0
IGxlbmd0aENvbXB1dGFibGUgdG8gZmFsc2UuCisgICAgZXZ0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudCgicHJvZ3Jlc3MiLCBleHBlY3RlZExlbmd0aCAmJiBtX3JlY2VpdmVkTGVu
Z3RoIDw9IGV4cGVjdGVkTGVuZ3RoLCBtX3JlY2VpdmVkTGVuZ3RoLCBleHBlY3RlZExlbmd0aCk7
CisKKyAgICBpZiAobV9vblByb2dyZXNzTGlzdGVuZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJn
ZXQodGhpcyk7CisgICAgICAgIGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAg
bV9vblByb2dyZXNzTGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAg
IH0KK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y2FuY2VsUmVxdWVzdHMoRG9jdW1lbnQqIG1f
ZG9jKQogewogICAgIFJlcXVlc3RzU2V0KiByZXF1ZXN0cyA9IHJlcXVlc3RzQnlEb2N1bWVudCgp
LmdldChtX2RvYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBkYzI4NDQxLi40OGZiMDQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogICAgIEV2ZW50TGlzdGVu
ZXIqIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPbkxv
YWRMaXN0ZW5lcihFdmVudExpc3RlbmVyKik7CiAgICAgRXZlbnRMaXN0ZW5lciogb25Mb2FkTGlz
dGVuZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldE9uUHJvZ3Jlc3NMaXN0ZW5lcihFdmVudExpc3Rl
bmVyKik7CisgICAgRXZlbnRMaXN0ZW5lciogb25Qcm9ncmVzc0xpc3RlbmVyKCkgY29uc3Q7CiAK
ICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gPiBMaXN0ZW5lclZlY3Rv
cjsKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIExpc3RlbmVyVmVjdG9y
PiBFdmVudExpc3RlbmVyc01hcDsKQEAgLTk4LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFN1YnJlc291cmNlTG9hZGVyKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIHZvaWQgcHJvY2Vzc1N5bmNMb2FkUmVz
dWx0cyhjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2b2lkIHVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyh1bnNpZ25lZCBpbnQgbGVuKTsK
IAogICAgIFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CiAgICAgYm9vbCByZXNwb25z
ZUlzWE1MKCkgY29uc3Q7CkBAIC0xMTMsNiArMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyOwogICAgIFJlZlB0
cjxFdmVudExpc3RlbmVyPiBtX29uTG9hZExpc3RlbmVyOworICAgIFJlZlB0cjxFdmVudExpc3Rl
bmVyPiBtX29uUHJvZ3Jlc3NMaXN0ZW5lcjsKICAgICBFdmVudExpc3RlbmVyc01hcCBtX2V2ZW50
TGlzdGVuZXJzOwogCiAgICAgS1VSTCBtX3VybDsKQEAgLTE0MSw2ICsxNDUsOSBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgUmVmUHRyPERvY3VtZW50PiBtX3Jlc3BvbnNlWE1MOwogCiAgICAgYm9v
bCBtX2Fib3J0ZWQ7CisKKyAgICAvLyBVc2VkIGZvciBvbnByb2dyZXNzIHRyYWNraW5nCisgICAg
bG9uZyBsb25nIG1fcmVjZWl2ZWRMZW5ndGg7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5pZGwgYi9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5pZGwKaW5kZXggNWNhYjE2My4uOTNlNTZiMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmlkbApAQCAtMzYsNiArMzYsOSBAQCBtb2R1bGUgeG1sIHsKICAgICAgICAgLy8gTm90
ZTogb25sb2FkIGlzIG5vdCBpbiB0aGUgc3BlY2lmaWNhdGlvbgogICAgICAgICBhdHRyaWJ1dGUg
W0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBvbmxvYWQ7CiAKKyAgICAgICAgLy8gWG1sSHR0cFJlcXVl
c3QgMiBleHRlbnNpb24KKyAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIEV2ZW50TGlzdGVuZXIg
b25wcm9ncmVzczsKKwogICAgICAgICAvLyBzdGF0ZQogICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBVTlNFTlQgPSAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBPUEVORUQgPSAx
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNw
cCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0NTYyNQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggSnVsaWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3
ZWJraXQub3JnPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCisKKyNpbmNsdWRl
ICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50OjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKQorICAgIDogUHJvZ3Jlc3NF
dmVudCgpCit7Cit9CisKK1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6WE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21w
dXRhYmxlLCB1bnNpZ25lZCBsb2FkZWQsIHVuc2lnbmVkIHRvdGFsKQorICAgIDogUHJvZ3Jlc3NF
dmVudCh0eXBlLCBsZW5ndGhDb21wdXRhYmxlLCBsb2FkZWQsIHRvdGFsKQoreworfQorCit1bnNp
Z25lZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OnBvc2l0aW9uKCkKK3sKKyAgICAvLyBG
SVhNRTogSWYgbGVuZ3RoQ29tcHV0YWJsZSBpcyBmYWxzZSwgd2hhdCBzaG91bGQgd2UgcmV0dXJu
PworICAgIHJldHVybiBtX2xvYWRlZDsKK30KKwordW5zaWduZWQgWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50Ojp0b3RhbFNpemUoKQoreworICAgIC8vIEZJWE1FOiBJZiBsZW5ndGhDb21wdXRh
YmxlIGlzIGZhbHNlLCB3aGF0IHNob3VsZCB3ZSByZXR1cm4/CisgICAgcmV0dXJuIG1fdG90YWw7
Cit9CisKK30gLy8gTmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiZDJi
ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEp1bGllbiBD
aGFmZnJhaXggPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaAorI2RlZmluZSBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaAorCisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQgOiBwdWJsaWMgUHJvZ3Jlc3NFdmVudCB7CisgICAgcHVibGljOgorICAgICAgICBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGxl
bmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvYWRlZCwgdW5zaWduZWQgdG90YWwpOworICAgICAg
ICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisK
KyAgICAgICAgLy8gQXZvaWQgbWF0Y2hpbmcgUHJvZ3Jlc3NFdmVudC4KKyAgICAgICAgdmlydHVh
bCBib29sIGlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAg
ICAgYm9vbCBsZW5ndGhDb21wdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhDb21wdXRh
YmxlOyB9CisgICAgICAgIHVuc2lnbmVkIGxvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVk
OyB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbDsgfQor
CisgICAgICAgIC8vIFRob3NlIDIgbWV0aG9kcyBhcmUgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEZp
cmVmb3ggYW5kIGFyZSBvbmx5IGEgd3JhcHBlciBvbiB0b3Agb2YgdGhlIHJlYWwgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJpbnQgYSB3YXJuaW5nIGFzIHRo
ZXkgYXJlIGRlcHJlY2F0ZWQuCisgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uKCk7CisgICAgICAg
IHVuc2lnbmVkIHRvdGFsU2l6ZSgpOworCisgICAgfTsgLy8gY2xhc3MgWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50CisKK30gLy8gTmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGU5Njkw
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICAvLyBXZSBzaG91
bGQgYWxzbyBpbmhlcml0IGZyb20gTFNQcm9ncmVzc0V2ZW50IHdoZW4gdGhlIGlkbCBpcyBhZGRl
ZC4KKyAgICBdIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCA6IFByb2dyZXNzRXZlbnQgewor
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgICBwb3NpdGlvbjsKKyAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgdG90YWxTaXplOworICAg
IH07CisKK30K
</data>
<flag name="review"
          id="9047"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20722</attachid>
            <date>2008-04-21 06:41:51 -0700</date>
            <delta_ts>2008-04-21 06:53:21 -0700</delta_ts>
            <desc>Updated with Ap&apos;s latest comments</desc>
            <filename>bug13596-updated-CL.patch</filename>
            <type>text/plain</type>
            <size>33378</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MDkxYzc3Li4zZDBkZDExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDgtMDQt
MjEgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDEzNTk2OiBJbXBsZW1l
bnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1cHBv
cnQgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3JtYXRpb24uCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2lu
Zm9PblByb2dyZXNzRXZlbnQuaHRtbDogQWRkZWQuCisKIDIwMDgtMDQtMTkgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0Lgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Q
cm9ncmVzc0V2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyMjY4MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvaW5mb09uUHJvZ3Jlc3NFdmVudC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwyMCBAQAorVGVzdCBjYXNlIGZvciBidWcgMTM1OTY6IEltcGxlbWVu
dCAub25wcm9ncmVzcyBoYW5kbGVyIG9uIFhNTEh0dHBSZXF1ZXN0IG9iamVjdHMgdG8gc3VwcG9y
dCBwcm9ncmVzc2l2ZSBkb3dubG9hZCBjb250ZW50IGxlbmd0aCBpbmZvcm1hdGlvbgorCitZb3Ug
c2hvdWxkIHNlZSB0eXBlLCBidWJibGUsIGNhbmNlbGFibGUsIGV2ZW50UGhhc2UsIHRhcmdldCBh
bmQgY3VycmVudCB0YXJnZXQgZm9yIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgY2FzZXMK
KworU3luY2hyb25vdXMgY2FzZToKK1R5cGU6IHByb2dyZXNzCitCdWJibGU6IGZhbHNlCitDYW5j
ZWxhYmxlOiBmYWxzZQorRXZlbnRQaGFzZTogMAorVGFyZ2V0OiBbb2JqZWN0IFhNTEh0dHBSZXF1
ZXN0XQorQ3VycmVudCB0YXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCisKK0FzeW5jaHJv
bm91cyBjYXNlOgorVHlwZTogcHJvZ3Jlc3MKK0J1YmJsZTogZmFsc2UKK0NhbmNlbGFibGU6IGZh
bHNlCitFdmVudFBoYXNlOiAwCitUYXJnZXQ6IFtvYmplY3QgWE1MSHR0cFJlcXVlc3RdCitDdXJy
ZW50IHRhcmdldDogW29iamVjdCBYTUxIdHRwUmVxdWVzdF0KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2luZm9PblByb2dyZXNzRXZl
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODBkNDhlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZv
T25Qcm9ncmVzc0V2ZW50Lmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPGh0bWw+Cis8aGVhZC8+Cis8
Ym9keT4KKzxwPiBUZXN0IGNhc2UgZm9yIGJ1ZyAxMzU5NjogSW1wbGVtZW50IC5vbnByb2dyZXNz
IGhhbmRsZXIgb24gWE1MSHR0cFJlcXVlc3Qgb2JqZWN0cyB0byBzdXBwb3J0IHByb2dyZXNzaXZl
IGRvd25sb2FkIGNvbnRlbnQgbGVuZ3RoIGluZm9ybWF0aW9uIDwvcD4KKzxwPiBZb3Ugc2hvdWxk
IHNlZSB0eXBlLCBidWJibGUsIGNhbmNlbGFibGUsIGV2ZW50UGhhc2UsIHRhcmdldCBhbmQgY3Vy
cmVudCB0YXJnZXQgZm9yIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgY2FzZXMgPC9wPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gbG9nIChtc2cpCit7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cp
KTsKKyAgICBpbnNlcnROZXdMaW5lKCk7Cit9CisKK2Z1bmN0aW9uIGluc2VydE5ld0xpbmUoKQor
eworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
YnIiKSk7Cit9CisKK2Z1bmN0aW9uIG9uUHJvZ3Jlc3MoZSkgeworICAgIGxvZygiVHlwZTogIiAr
IGUudHlwZSk7CisgICAgbG9nKCJCdWJibGU6ICIgKyBlLmJ1YmJsZXMpOworICAgIGxvZygiQ2Fu
Y2VsYWJsZTogIiArIGUuY2FuY2VsYWJsZSk7CisgICAgbG9nKCJFdmVudFBoYXNlOiAiICsgZS5l
dmVudFBoYXNlKTsKKyAgICBsb2coIlRhcmdldDogIiArIGUudGFyZ2V0KTsKKyAgICBsb2coIkN1
cnJlbnQgdGFyZ2V0OiAiICsgZS5jdXJyZW50VGFyZ2V0KTsKKyAgICBlLmN1cnJlbnRUYXJnZXQu
b25wcm9ncmVzcyA9IG51bGw7CisgICAgaWYgKHNob3VsZE5vdGlmeSAmJiB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworZnVuY3Rpb24gb25FcnJvcihlKSB7CisgIGFsZXJ0KCJFcnJvciAiICsgZS50YXJn
ZXQuc3RhdHVzICsgIiBvY2N1cnJlZCB3aGlsZSByZWNlaXZpbmcgdGhlIGRvY3VtZW50LiIpOwor
fQorCit2YXIgc2hvdWxkTm90aWZ5ID0gZmFsc2U7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitsb2coIlN5bmNocm9u
b3VzIGNhc2U6Iik7CisKKy8vIFRlc3Qgc3luY2hyb25vdXMKK3ZhciByZXEgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKTsKK3JlcS5vbnByb2dyZXNzID0gb25Qcm9ncmVzczsKK3JlcS5vcGVuKCJHRVQi
LCAicmVzb3VyY2VzLzEyNTEuaHRtbCIsIGZhbHNlKTsKK3JlcS5zZW5kKG51bGwpOworCitpbnNl
cnROZXdMaW5lKCk7Citsb2coIkFzeW5jaHJvbm91cyBjYXNlOiIpOworCisvLyBUZXN0IGFzeW5j
aHJvbm91cwordmFyIHJlcTIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKK3JlcTIub25wcm9ncmVz
cyA9IG9uUHJvZ3Jlc3M7CityZXEyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvMTI1MS5odG1sIiwg
dHJ1ZSk7CitzaG91bGROb3RpZnkgPSB0cnVlOworcmVxMi5zZW5kKG51bGwpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDk0YTFiYzUuLjVmYTA0ZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMDgt
MDQtMjEgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDEzNTk2OiBJbXBs
ZW1lbnQgLm9ucHJvZ3Jlc3MgaGFuZGxlciBvbiBYTUxIdHRwUmVxdWVzdCBvYmplY3RzIHRvIHN1
cHBvcnQKKyAgICAgICAgcHJvZ3Jlc3NpdmUgZG93bmxvYWQgY29udGVudCBsZW5ndGggaW5mb3Jt
YXRpb24uCisKKyAgICAgICAgLSBBZGQgdGhlIG9ucHJvZ3Jlc3MgYXR0cmlidXRlIHRvIFhNTEh0
dHBSZXF1ZXN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpbmRpbmdzLgorCisgICAgICAgIC0gV2UgdXNl
IGEgY3VzdG9tIGV2ZW50IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCB0aGF0IGlzIGRlcml2
ZWQgZnJvbSBQcm9ncmVzc0V2ZW50CisgICAgICAgICAoYXMgc3BlY2lmaWVkIGJ5IHRoZSBYSFIy
IHNwZWNpZmljYXRpb24pIGJ1dCBhbHNvIGltcGxlbWVudCBMU1Byb2dyZXNzRXZlbnQgaW50ZXJm
YWNlCisgICAgICAgICAodG8gYmUgY29tcGxpYW50IHdpdGggRmlyZWZveCBldmVudCkuCisKKyAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9pbmZvT25Qcm9ncmVzc0V2ZW50
Lmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0
dHBSZXF1ZXN0OjpvbnByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVl
c3Q6OnNldE9ucHJvZ3Jlc3MpOgorICAgICAgICAqIGRvbS9FdmVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQpOgorICAgICAgICAq
IGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9Qcm9ncmVzc0V2ZW50Lmg6IFJlcGxhY2VkICdw
cml2YXRlJyBieSAncHJvdGVjdGVkJyB0byBlbmFibGUgZGVyaXZhdGlvbi4KKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
Om9uUHJvZ3Jlc3NMaXN0ZW5lcik6IG9ucHJvZ3Jlc3MgZ2V0dGVyLgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNldE9uUHJvZ3Jlc3NMaXN0ZW5lcik6IG9ucHJvZ3Jlc3Mgc2V0
dGVyLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KTog
aW5pdGlhbGl6ZSBtX3JlY2VpdmVkTGVuZ3RoLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmludGVybmFsQWJvcnQpOiByZXNldCBtX3JlY2VpdmVkTGVuZ3RoIG9uIGFib3J0Lgor
ICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKTogYWRkIHVw
ZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyBjYWxsLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6ZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsOiBBZGQg
b25wcm9ncmVzcyBldmVudCBoYW5kbGVyLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudDo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6cG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojp0b3RhbFNpemUpOgorICAgICAg
ICBUaGUgdHdvIHByZXZpb3VzIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEZpcmVmb3ggY29tcGF0aWJp
bGl0eSBhbmQgbWFwIHRvIHRoZQorICAgICAgICBzYW1lIHZhbHVlIGFzIHRoZSBQcm9ncmVzc0V2
ZW50IG1ldGhvZHMgKGJ1dCB0aGV5IGFyZSBkZXByZWNhdGVkIGFuZCBkaXNwbGF5CisKKyAgICAg
ICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQ6OmlzUHJvZ3Jlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQ6Omxlbmd0aENvbXB1dGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojpsb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojp0b3RhbCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5pZGw6IEFkZGVkLgorCiAyMDA4LTA0LTIwICBTcmlyYW0gTmVlbGFr
YW5kYW4gIDxzcmlyYW0ubmVlbGFrYW5kYW5AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFscCBUb2tlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBi
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBiN2U0OWExLi40ZjI1NjM0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0zNDAsNiArMzQwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2hl
ZWxFdmVudCBcCiAgICAgWE1MSHR0cFJlcXVlc3QgXAogICAgIFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uIFwKKyAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQgXAogICAgIFhNTFNlcmlhbGl6
ZXIgXAogICAgIFhQYXRoRXZhbHVhdG9yIFwKICAgICBYUGF0aEV4Y2VwdGlvbiBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRl
eCA0ODczODQ3Li4yMTNiMmYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMzMiw2ICszMzIsNyBAQCB3ZWJjb3JlX2J1
aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL0pTV2hlZWxFdmVudC5jcHAgXAogCURl
cml2ZWRTb3VyY2VzL0pTWE1MSHR0cFJlcXVlc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1hN
TEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1hNTFNlcmlhbGl6ZXIu
Y3BwCiAKIElETF9CSU5ESU5HUyArPSAgXApAQCAtNDY0LDYgKzQ2NSw3IEBAIElETF9CSU5ESU5H
UyArPSAgXAogCVdlYkNvcmUvcGx1Z2lucy9QbHVnaW5BcnJheS5pZGwgXAogCVdlYkNvcmUveG1s
L0RPTVBhcnNlci5pZGwgXAogCVdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbCBcCisJV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCBcCiAJV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIFwKIAlXZWJDb3JlL3htbC9YTUxTZXJpYWxpemVy
LmlkbAogCkBAIC05NzcsNiArOTc5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAJV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNw
cCBcCiAJV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIFwKKwlXZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIFwKIAlXZWJDb3JlL3htbC9YTUxTZXJpYWxpemVy
LmNwcAogCiB3ZWJraXRndGtfaGVhZGVycyArPSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAzMzc3NTA0Li4wNDdkZWMzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAg
LTQwMSw2ICs0MDEsNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgIHhtbC9ET01QYXJzZXIuaWRs
IFwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsIFwKICAgICB4bWwvWE1MSHR0cFJlcXVlc3RF
eGNlcHRpb24uaWRsIFwKKyAgICB4bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCBc
CiAgICAgeG1sL1hNTFNlcmlhbGl6ZXIuaWRsCiAKIApAQCAtOTE1LDYgKzkxNiw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIHhtbC9ET01QYXJzZXIuY3BwIFwKICAgICB4bWwvTmF0aXZlWFBhdGhOU1Jl
c29sdmVyLmNwcCBcCiAgICAgeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBcCisgICAgeG1sL1hNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgXAogICAgIHhtbC9YTUxTZXJpYWxpemVyLmNwcCBc
CiAgICAgeG1sL1hQYXRoRXZhbHVhdG9yLmNwcCBcCiAgICAgeG1sL1hQYXRoRXhwcmVzc2lvbi5j
cHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmE5NmNhNi4uZjEw
ZjJlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yODMwLDYgKzI4
MzAsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdl
YktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTWE1MU2Vy
aWFsaXplci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTAwMTAsNiArMTAwMTgsMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
eG1sXFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx4bWxcWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlx4bWxcWE1MU2VyaWFsaXplci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMzczNGVlLi5l
MmU1NzczIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mzk0OCw2ICszOTQ4LDEwIEBACiAJCUU0QUZEMDEwMERBRjMzNTUwMEY1RjU1QyAvKiBTVkdTTUlM
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRBRkQwMEEwREFGMzM1NDAwRjVGNTVDIC8qIFNWR1NNSUxFbGVtZW50LmggKi87IH07CiAJCUU0
QzI3OTU4MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEMyNzk1NjBDRjk3NDE5MDBFOTdCOTgg
LyogUmVuZGVyTWVkaWEuY3BwICovOyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyog
UmVuZGVyTWVkaWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyB9OworCQlG
OTE2QzQ4RDBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0
OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAq
LzsgfTsKKwkJRjkxNkM0OEUwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaCAqLzsgfTsKKwkJRjlGMEVENzkwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGOUYwRUQ3NjBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmNwcCAqLzsgfTsKKwkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5oICovOyB9OwogCQlFNEVFRkZDODBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRp
b0NvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0RUVGRkM2MEQzNDU1MEMwMDQ2OUE1OCAvKiBKU0F1ZGlvQ29uc3RydWN0b3IuY3Bw
ICovOyB9OwogCQlFNEVFRkZDOTBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEVFRkZD
NzBEMzQ1NTBDMDA0NjlBNTggLyogSlNBdWRpb0NvbnN0cnVjdG9yLmggKi87IH07CiAJCUVEMDQ4
QUJDMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFRDA0OEFCQjA4MzNGMTMy
MDA2RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlmZiAqLzsgfTsKQEAgLTgyNzQsNiAr
ODI3OCwxMSBAQAogCQlGNTIzRDI3OTAyREU0M0Q3MDE4NjM1Q0EgLyogVGV4dFJlc291cmNlRGVj
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIzRDMwMzAyREU0NDc2MDE4NjM1Q0EgLyogUmFu
Z2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmFuZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKIAkJRjUyM0QzMDQwMkRFNDQ3NjAxODYzNUNBIC8qIFJhbmdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhbmdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owor
CQlGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmNwcDsgc291cmNlVHJlZT0iPGdyb3VwPiI7IH07CisJCUY5MTZD
NDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjlGMEVENzYwREI1MENBMjAw
RDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY5RjBFRDc4MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTIzRDMwOTAy
REU0NDc2MDE4NjM1Q0EgLyogWE1MVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRva2VuaXplci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTIz
RDMwQTAyREU0NDc2MDE4NjM1Q0EgLyogWE1MVG9rZW5pemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTFRva2VuaXplci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg0
RjAwMkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEN1cnNvck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xMTE0
Nyw2ICsxMTE1Niw4IEBACiAJCQkJQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0
cFJlcXVlc3QuaCAqLywKIAkJCQlCQzYwREEzNzBEMkEzMDI4MDBCOTkxOEYgLyogSlNYTUxIdHRw
UmVxdWVzdEV4Y2VwdGlvbi5jcHAgKi8sCiAJCQkJQkM2MERBMzgwRDJBMzAyODAwQjk5MThGIC8q
IEpTWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCAqLywKKwkJCQlGOTE2QzQ4QjBEQjUxMEY4MDA3
NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovLAorCQkJCUY5MTZD
NDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
LAogCQkJCTFBQ0U1M0Y0MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuY3BwICov
LAogCQkJCTFBQ0U1M0Y1MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNlcmlhbGl6ZXIuaCAqLywK
IAkJCQk2NTY1ODFEOTA5RDE1MDhEMDAwRTYxRDcgLyogSlNYU0xUUHJvY2Vzc29yLmx1dC5oICov
LApAQCAtMTIzODgsNiArMTIzOTksOSBAQAogCQkJCUJDMzQ4QkE3MERCN0YxQjgwMDRBQkFCOSAv
KiBYTUxIdHRwUmVxdWVzdC5pZGwgKi8sCiAJCQkJQkM2MEQ5QzcwRDJBMjlFNTAwQjk5MThGIC8q
IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggKi8sCiAJCQkJQkM2MEQ5QzgwRDJBMjlFNTAwQjk5
MThGIC8qIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmlkbCAqLywKKwkJCQlGOUYwRUQ3NjBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLywKKwkJCQlG
OUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgg
Ki8sCisJCQkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jl
c3NFdmVudC5pZGwgKi8sCiAJCQkJMUFDRTUzRTQwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlh
bGl6ZXIuY3BwICovLAogCQkJCTFBQ0U1M0U1MEE4RDE4RTcwMDIyOTQ3RCAvKiBYTUxTZXJpYWxp
emVyLmggKi8sCiAJCQkJMUFDRTUzRTYwQThEMThFNzAwMjI5NDdEIC8qIFhNTFNlcmlhbGl6ZXIu
aWRsICovLApAQCAtMTQ5MzgsNiArMTQ5NTIsOCBAQAogCQkJCTUxNEI0OURGMERCNkQ2QjYwMDFD
Mzc3MCAvKiBTZXNzaW9uU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzQ4QkQ0
MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzM0OEJFQTBEQjgwMzU0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGOTE2QzQ4RTBEQjUx
MEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMTY2NDUsNiArMTY2NjEsOCBAQAogCQkJCUJDMzQ4QkJFMERCN0Y1MzEwMDRBQkFC
OSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMzQ4
QkQzMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDMzQ4QkU5MERCODAzNTQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjlGMEVENzkwREI1MENBMjAwRDE2REI5IC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGOTE2
QzQ4RDBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbCBi
L1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCmluZGV4IDIxY2Q0YzMuLjJkNTA1YmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCisrKyBiL1dlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCkBAIC0zMTgsNiArMzE4LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0
IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2hlZWxFdmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNYTUxTZXJpYWxpemVyLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTWFBhdGhFdmFsdWF0b3IuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNYUGF0aEV4Y2VwdGlvbi5jcHAKQEAgLTgyOCw2ICs4MjksNyBAQCBUaGlzIGZpbGUgY29u
dGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAg
IHhtbC9ET01QYXJzZXIuY3BwCiAgICAgICAgIHhtbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3Bw
CiAgICAgICAgIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAKKyAgICAgICAgeG1sL1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5jcHAKICAgICAgICAgeG1sL1hNTFNlcmlhbGl6ZXIuY3BwCiAgICAg
ICAgIHhtbC9YUGF0aEV2YWx1YXRvci5jcHAKICAgICAgICAgeG1sL1hQYXRoRXhwcmVzc2lvbi5j
cHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCmluZGV4IDI3OWRlNGEuLmRiM2Zl
Y2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIkpTVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiSlNVSUV2ZW50LmgiCiAjaW5j
bHVkZSAiSlNXaGVlbEV2ZW50LmgiCisjaW5jbHVkZSAiSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiV2hlZWxF
dmVudC5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1
ZGUgImtqc19ldmVudHMuaCIKIAogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKQEAgLTExNCw2ICsx
MTYsOCBAQCBKU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZlbnQqIGV2ZW50KQogICAg
IGVsc2UgaWYgKGV2ZW50LT5pc1N0b3JhZ2VFdmVudCgpKQogICAgICAgICByZXQgPSBuZXcgSlNT
dG9yYWdlRXZlbnQoSlNTdG9yYWdlRXZlbnRQcm90b3R5cGU6OnNlbGYoZXhlYyksIHN0YXRpY19j
YXN0PFN0b3JhZ2VFdmVudCo+KGV2ZW50KSk7CiAjZW5kaWYKKyAgICBlbHNlIGlmIChldmVudC0+
aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSkKKyAgICAgICAgcmV0ID0gbmV3IEpTWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50UHJv
dG90eXBlOjpzZWxmKGV4ZWMpLCBzdGF0aWNfY2FzdDxYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQqPihldmVudCkpOwogICAgIGVsc2UKICAgICAgICAgcmV0ID0gbmV3IEpTRXZlbnQoSlNFdmVu
dFByb3RvdHlwZTo6c2VsZihleGVjKSwgZXZlbnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCBiZDk3MjhjLi5hNDI5MWUyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTU1
LDYgKzU1LDkgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjptYXJrKCkKICAgICBpZiAoSlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uTG9hZExpc3RlbmVyKCkpKQogICAgICAg
ICBvbkxvYWRMaXN0ZW5lci0+bWFyaygpOwogICAgIAorICAgIGlmIChKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lciogb25Qcm9ncmVzc0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uUHJvZ3Jlc3NMaXN0ZW5lcigpKSkKKyAgICAgICAg
b25Qcm9ncmVzc0xpc3RlbmVyLT5tYXJrKCk7CisgICAgCiAgICAgdHlwZWRlZiBYTUxIdHRwUmVx
dWVzdDo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRMaXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBY
TUxIdHRwUmVxdWVzdDo6TGlzdGVuZXJWZWN0b3IgTGlzdGVuZXJWZWN0b3I7CiAgICAgRXZlbnRM
aXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzID0gbV9pbXBsLT5ldmVudExpc3RlbmVycygpOwpA
QCAtOTgsNiArMTAxLDIyIEBAIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25sb2FkKEV4ZWNT
dGF0ZSosIEpTVmFsdWUqIHZhbHVlKQogICAgIH0KIH0KIAorSlNWYWx1ZSogSlNYTUxIdHRwUmVx
dWVzdDo6b25wcm9ncmVzcyhFeGVjU3RhdGUqKSBjb25zdAoreworICAgIGlmIChKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcio+KGltcGwoKS0+b25Qcm9ncmVzc0xpc3RlbmVyKCkpKQorICAgICAgICBpZiAo
SlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCisgICAgICAg
ICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CisgICAgcmV0dXJuIGpzTnVsbCgpOworfQorCit2b2lk
IEpTWE1MSHR0cFJlcXVlc3Q6OnNldE9ucHJvZ3Jlc3MoRXhlY1N0YXRlKiwgSlNWYWx1ZSogdmFs
dWUpCit7CisgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGltcGwoKS0+ZG9jdW1lbnQoKSkg
eworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAg
ICAgICBpbXBsKCktPnNldE9uUHJvZ3Jlc3NMaXN0ZW5lcih0b0pTRE9NV2luZG93KGZyYW1lKS0+
ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIodmFsdWUsIHRydWUpKTsKKyAg
ICB9Cit9CisKIC8vIEN1c3RvbSBmdW5jdGlvbnMKIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6
Om9wZW4oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQogewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IDA3ZjY4
ZjQuLmYwYWM5OTUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAorKysgYi9XZWJD
b3JlL2RvbS9FdmVudC5jcHAKQEAgLTEzNCw2ICsxMzQsMTEgQEAgYm9vbCBFdmVudDo6aXNQcm9n
cmVzc0V2ZW50KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgRXZlbnQ6Omlz
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVudDo6aXNTVkdab29tRXZlbnQoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1dlYkNvcmUvZG9tL0V2ZW50
LmgKaW5kZXggY2FhNjY0Ni4uOGM2MTBlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRXZlbnQu
aAorKysgYi9XZWJDb3JlL2RvbS9FdmVudC5oCkBAIC0xMDgsNiArMTA4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVyZmxvd0V2ZW50KCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCBib29sIGlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3Q7CiAjaWYg
RU5BQkxFKFNWRykKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaCBiL1dlYkNv
cmUvZG9tL1Byb2dyZXNzRXZlbnQuaAppbmRleCBlMjE1MDkxLi5lZmQ3YTFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKKysrIGIvV2ViQ29yZS9kb20vUHJvZ3Jlc3NF
dmVudC5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgICAgIAotICAgIHByaXZhdGU6CisgICAgcHJvdGVjdGVkOgogICAgICAgICBib29s
IG1fbGVuZ3RoQ29tcHV0YWJsZTsKICAgICAgICAgdW5zaWduZWQgbV9sb2FkZWQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fdG90YWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNWM2ZGJhMy4uNmZh
OTFjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3
ZWJraXQub3JnPgotICogIENvcHlyaWdodCAoQykgMjAwNyBKdWxpZW4gQ2hhZmZyYWl4IDxqdWxp
ZW4uY2hhZmZyYWl4QGdtYWlsLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggSnVs
aWVuIENoYWZmcmFpeCA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5j
bHVkZSAia2pzX2JpbmRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5LDExICsx
OTAsMjEgQEAgRXZlbnRMaXN0ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uTG9hZExpc3RlbmVyKCkg
Y29uc3QKICAgICByZXR1cm4gbV9vbkxvYWRMaXN0ZW5lci5nZXQoKTsKIH0KIAorRXZlbnRMaXN0
ZW5lciogWE1MSHR0cFJlcXVlc3Q6Om9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgpOworfQorCiB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZXRPbkxvYWRMaXN0ZW5lcihFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQogewog
ICAgIG1fb25Mb2FkTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwogfQogCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZXRPblByb2dyZXNzTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5l
cikKK3sKKyAgICBtX29uUHJvZ3Jlc3NMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7Cit9CisKIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciwgYm9vbCkK
IHsKICAgICBFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaXRlciA9IG1fZXZlbnRMaXN0ZW5l
cnMuZmluZChldmVudFR5cGUuaW1wbCgpKTsKQEAgLTI1Miw2ICsyNjMsNyBAQCBYTUxIdHRwUmVx
dWVzdDo6WE1MSHR0cFJlcXVlc3QoRG9jdW1lbnQqIGQpCiAgICAgLCBtX3Jlc3BvbnNlVGV4dCgi
IikKICAgICAsIG1fY3JlYXRlZERvY3VtZW50KGZhbHNlKQogICAgICwgbV9hYm9ydGVkKGZhbHNl
KQorICAgICwgbV9yZWNlaXZlZExlbmd0aCgwKQogewogICAgIEFTU0VSVChtX2RvYyk7CiAgICAg
YWRkVG9SZXF1ZXN0c0J5RG9jdW1lbnQobV9kb2MsIHRoaXMpOwpAQCAtNDk4LDYgKzUxMCw5IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAgICAgbV9hYm9ydGVkID0g
dHJ1ZTsKIAorICAgIC8vIEZJWE1FOiB3aGVuIHdlIGFkZCB0aGUgc3VwcG9ydCBmb3IgbXVsdGkt
cGFydCBYSFIsIHdlIHdpbGwgaGF2ZSB0byB0aGluayBiZSBjYXJlZnVsIHdpdGggdGhpcyBpbml0
aWFsaXphdGlvbi4KKyAgICBtX3JlY2VpdmVkTGVuZ3RoID0gMDsKKwogICAgIGlmIChoYWRMb2Fk
ZXIpIHsKICAgICAgICAgbV9sb2FkZXItPmNhbmNlbCgpOwogICAgICAgICBtX2xvYWRlciA9IDA7
CkBAIC03NjMsNiArNzc4LDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
U3VicmVzb3VyY2VMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGUKICAgICB9CiAKICAg
ICBpZiAoIW1fYWJvcnRlZCkgeworICAgICAgICB1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3Mo
bGVuKTsKKwogICAgICAgICBpZiAobV9zdGF0ZSAhPSBSZWNlaXZpbmcpCiAgICAgICAgICAgICBj
aGFuZ2VTdGF0ZShSZWNlaXZpbmcpOwogICAgICAgICBlbHNlCkBAIC03NzEsNiArNzg4LDM1IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlc291cmNlTG9hZGVyKiwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAgICAgfQogfQogCit2b2lkIFhNTEh0dHBSZXF1ZXN0
Ojp1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbikKK3sKKyAgICBs
b25nIGxvbmcgZXhwZWN0ZWRMZW5ndGggPSBtX3Jlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpOworCisgICAgbV9yZWNlaXZlZExlbmd0aCArPSBsZW47CisKKyAgICAvLyBGSVhNRTogdGhl
IHNwZWMgcmVxdWlyZXMgdGhhdCB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQgYWNjb3JkaW5nIHRvIHRo
ZSBsZWFzdAorICAgIC8vIGZyZXF1ZW50IG1ldGhvZCBiZXR3ZWVuIGV2ZXJ5IDM1MG1zICgrLy0y
MDBtcykgYW5kIGZvciBldmVyeSBieXRlIHJlY2VpdmVkLgorICAgIGRpc3BhdGNoUHJvZ3Jlc3NF
dmVudChleHBlY3RlZExlbmd0aCk7Cit9CisKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpc3BhdGNo
UHJvZ3Jlc3NFdmVudChsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgpCit7CisgICAgUmVmUHRyPFhN
TEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudD4gZXZ0OworCisgICAgLy8gSWYgd2UgZG8gbm90IGhh
dmUgdGhlIGluZm9ybWF0aW9uIG9yIGl0IGlzIG9kZCwgc2V0IGxlbmd0aENvbXB1dGFibGUgdG8g
ZmFsc2UuCisgICAgZXZ0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudChwcm9ncmVz
c0V2ZW50LCBleHBlY3RlZExlbmd0aCAmJiBtX3JlY2VpdmVkTGVuZ3RoIDw9IGV4cGVjdGVkTGVu
Z3RoLCBtX3JlY2VpdmVkTGVuZ3RoLCBleHBlY3RlZExlbmd0aCk7CisKKyAgICBpZiAobV9vblBy
b2dyZXNzTGlzdGVuZXIpIHsKKyAgICAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CisgICAgICAg
IGV2dC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKKyAgICAgICAgbV9vblByb2dyZXNzTGlzdGVu
ZXItPmhhbmRsZUV2ZW50KGV2dC5nZXQoKSwgZmFsc2UpOworICAgIH0KKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIGRpc3BhdGNoRXZlbnQoZXZ0LCBlYywgZmFsc2UpOworICAgIEFT
U0VSVCghZWMpOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjYW5jZWxSZXF1ZXN0cyhEb2N1
bWVudCogbV9kb2MpCiB7CiAgICAgUmVxdWVzdHNTZXQqIHJlcXVlc3RzID0gcmVxdWVzdHNCeURv
Y3VtZW50KCkuZ2V0KG1fZG9jKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmggYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IGRjMjg0NDEuLjE4ZDQx
YjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgRXZl
bnRMaXN0ZW5lciogb25SZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKSBjb25zdDsKICAgICB2b2lk
IHNldE9uTG9hZExpc3RlbmVyKEV2ZW50TGlzdGVuZXIqKTsKICAgICBFdmVudExpc3RlbmVyKiBv
bkxvYWRMaXN0ZW5lcigpIGNvbnN0OworICAgIHZvaWQgc2V0T25Qcm9ncmVzc0xpc3RlbmVyKEV2
ZW50TGlzdGVuZXIqKTsKKyAgICBFdmVudExpc3RlbmVyKiBvblByb2dyZXNzTGlzdGVuZXIoKSBj
b25zdDsKIAogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3Rl
bmVyVmVjdG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgTGlzdGVu
ZXJWZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwpAQCAtNzcsNiArNzksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlv
bkNvZGUmLCBib29sIHRlbXBFdmVudCA9IGZhbHNlKTsKICAgICBFdmVudExpc3RlbmVyc01hcCYg
ZXZlbnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKKyAgICB2b2lk
IGRpc3BhdGNoUHJvZ3Jlc3NFdmVudChsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgpOworCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2M7IH0KIAogICAgIHVzaW5n
IFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+OjpyZWY7CkBAIC05OCw2ICsxMDIsNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihTdWJyZXNvdXJjZUxv
YWRlciosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKICAgICB2b2lkIHByb2Nl
c3NTeW5jTG9hZFJlc3VsdHMoY29uc3QgVmVjdG9yPGNoYXI+JiBkYXRhLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgdm9pZCB1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWdu
ZWQgaW50IGxlbik7CiAKICAgICBTdHJpbmcgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0OwogICAg
IGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwpAQCAtMTEzLDYgKzExOCw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5l
cjsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbV9vbkxvYWRMaXN0ZW5lcjsKKyAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbV9vblByb2dyZXNzTGlzdGVuZXI7CiAgICAgRXZlbnRMaXN0ZW5l
cnNNYXAgbV9ldmVudExpc3RlbmVyczsKIAogICAgIEtVUkwgbV91cmw7CkBAIC0xNDEsNiArMTQ3
LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxEb2N1bWVudD4gbV9yZXNwb25zZVhN
TDsKIAogICAgIGJvb2wgbV9hYm9ydGVkOworCisgICAgLy8gVXNlZCBmb3Igb25wcm9ncmVzcyB0
cmFja2luZworICAgIGxvbmcgbG9uZyBtX3JlY2VpdmVkTGVuZ3RoOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRs
IGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaWRsCmluZGV4IDVjYWIxNjMuLmM0MmY2MTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAorKysgYi9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5pZGwKQEAgLTM2LDYgKzM2LDkgQEAgbW9kdWxlIHhtbCB7CiAg
ICAgICAgIC8vIE5vdGU6IG9ubG9hZCBpcyBub3QgaW4gdGhlIHNwZWNpZmljYXRpb24KICAgICAg
ICAgYXR0cmlidXRlIFtDdXN0b21dIEV2ZW50TGlzdGVuZXIgb25sb2FkOwogCisgICAgICAgIC8v
IFhNTEh0dHBSZXF1ZXN0IDIgZXh0ZW5zaW9uCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBF
dmVudExpc3RlbmVyIG9ucHJvZ3Jlc3M7CisKICAgICAgICAgLy8gc3RhdGUKICAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgVU5TRU5UID0gMDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hv
cnQgT1BFTkVEID0gMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZWZjMjYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IEp1bGllbiBDaGFmZnJhaXgg
PGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkKKyAgICA6IFByb2dyZXNzRXZlbnQoKQorewor
fQorCitYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5z
aWduZWQgbG9hZGVkLCB1bnNpZ25lZCB0b3RhbCkKKyAgICA6IFByb2dyZXNzRXZlbnQodHlwZSwg
bGVuZ3RoQ29tcHV0YWJsZSwgbG9hZGVkLCB0b3RhbCkKK3sKK30KKwordW5zaWduZWQgWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50Ojpwb3NpdGlvbigpCit7CisgICAgcmV0dXJuIG1fbG9hZGVk
OworfQorCit1bnNpZ25lZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OnRvdGFsU2l6ZSgp
Cit7CisgICAgcmV0dXJuIG1fdG90YWw7Cit9CisKK30gLy8gTmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGIvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZTRiZDJiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEp1bGllbiBDaGFmZnJhaXggPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnRfaAorI2RlZmluZSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRfaAorCisjaW5j
bHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFz
cyBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQgOiBwdWJsaWMgUHJvZ3Jlc3NFdmVudCB7Cisg
ICAgcHVibGljOgorICAgICAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvYWRlZCwg
dW5zaWduZWQgdG90YWwpOworICAgICAgICBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKTsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgLy8gQXZvaWQgbWF0Y2hpbmcgUHJvZ3Jl
c3NFdmVudC4KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NFdmVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisKKyAgICAgICAgYm9vbCBsZW5ndGhDb21wdXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGhDb21wdXRhYmxlOyB9CisgICAgICAgIHVuc2lnbmVkIGxvYWRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZGVkOyB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbDsgfQorCisgICAgICAgIC8vIFRob3NlIDIgbWV0aG9kcyBhcmUg
dG8gYmUgY29tcGF0aWJsZSB3aXRoIEZpcmVmb3ggYW5kIGFyZSBvbmx5IGEgd3JhcHBlciBvbiB0
b3Agb2YgdGhlIHJlYWwgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcHJpbnQgYSB3YXJuaW5nIGFzIHRoZXkgYXJlIGRlcHJlY2F0ZWQuCisgICAgICAgIHVuc2ln
bmVkIHBvc2l0aW9uKCk7CisgICAgICAgIHVuc2lnbmVkIHRvdGFsU2l6ZSgpOworCisgICAgfTsg
Ly8gY2xhc3MgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50CisKK30gLy8gTmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudF9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaWRsIGIvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42ZGU5NjkwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgZXZlbnRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3IKKyAgICAvLyBXZSBzaG91bGQgYWxzbyBpbmhlcml0IGZyb20gTFNQcm9ncmVzc0V2
ZW50IHdoZW4gdGhlIGlkbCBpcyBhZGRlZC4KKyAgICBdIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudCA6IFByb2dyZXNzRXZlbnQgeworICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgICBwb3NpdGlvbjsKKyAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nICAgdG90YWxTaXplOworICAgIH07CisKK30K
</data>
<flag name="review"
          id="9059"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>