<?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>73025</bug_id>
          
          <creation_ts>2011-11-23 09:51:12 -0800</creation_ts>
          <short_desc>IndexedDB: Cursor pre-fetching</short_desc>
          <delta_ts>2011-12-01 02:54:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jsbell</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508197</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-23 09:51:12 -0800</bug_when>
    <thetext>IndexedDB: Cursor pre-fetching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508205</commentid>
    <comment_count>1</comment_count>
      <attachid>116378</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-23 10:08:11 -0800</bug_when>
    <thetext>Created attachment 116378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508206</commentid>
    <comment_count>2</comment_count>
      <attachid>116378</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-23 10:08:52 -0800</bug_when>
    <thetext>Comment on attachment 116378
Patch

Not ready for real review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508209</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-23 10:18:44 -0800</bug_when>
    <thetext>This is not quite ready for landing yet, just uploading to get some early feedback. Please take a look.

The Chromium side is here: http://codereview.chromium.org/8662017/
I&apos;ll need to figure out how to land this on both sides without breaking stuff.

The pre-submit script had a few style nits. I&apos;ll fix those next time I upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508762</commentid>
    <comment_count>4</comment_count>
      <attachid>116508</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-24 07:13:25 -0800</bug_when>
    <thetext>Created attachment 116508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508763</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-24 07:15:17 -0800</bug_when>
    <thetext>This is ready for review now. Please take a look.

This should be landed first, and the Chromium side patch afterwards.

Adding Darin since this touches the WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508768</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-24 07:18:38 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509087</commentid>
    <comment_count>7</comment_count>
      <attachid>116597</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-25 04:21:52 -0800</bug_when>
    <thetext>Created attachment 116597
Patch

IDBCursorBackendImpl needs to hold on to a copy of the cursor. We can&apos;t do save/restore inside the IDBBackingStore::Cursor object, becuase we actually throw that away if we iterate to the end of the range.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509090</commentid>
    <comment_count>8</comment_count>
      <attachid>116597</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-25 04:27:21 -0800</bug_when>
    <thetext>Comment on attachment 116597
Patch

Attachment 116597 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10618430</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509163</commentid>
    <comment_count>9</comment_count>
      <attachid>116618</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-25 07:49:35 -0800</bug_when>
    <thetext>Created attachment 116618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509286</commentid>
    <comment_count>10</comment_count>
      <attachid>116618</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-25 16:00:09 -0800</bug_when>
    <thetext>Comment on attachment 116618
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=116618&amp;action=review

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:129
&gt; +    RefPtr&lt;IDBCallbacks&gt; callbacks = prpCallbacks;

Just a drive by comment: Both of these items (this, prpCallbacks)  should go directly to createCallbackTask without being put in a RefPtr. (Note at one point, createCallbackTask couldn&apos;t compile with a PassRefPtr but now it can. I suspect you&apos;re following an old pattern from elsewhere that can be cleaned up now.)

&gt; Source/WebCore/storage/IDBRequest.h:87
&gt; +    virtual void onSuccessWithPrefetch(Vector&lt;RefPtr&lt;IDBKey&gt; &gt; keys, Vector&lt;RefPtr&lt;IDBKey&gt; &gt; primaryKeys, Vector&lt;RefPtr&lt;SerializedScriptValue&gt; &gt; values) { ASSERT_NOT_REACHED(); } // Not implemented. Callback should not reach the renderer side.

I suspect that having variable names here that are unused is going to cause compile errors on some platforms. (In this place and a few others.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509700</commentid>
    <comment_count>11</comment_count>
      <attachid>116722</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-28 03:15:53 -0800</bug_when>
    <thetext>Created attachment 116722
Patch

Thanks David! Uploading new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509866</commentid>
    <comment_count>12</comment_count>
      <attachid>116722</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-28 09:01:11 -0800</bug_when>
    <thetext>Comment on attachment 116722
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review

&gt; Source/WebKit/chromium/public/WebIDBCallbacks.h:59
&gt; +    virtual void onSuccessWithPrefetch(WebVector&lt;WebIDBKey&gt; keys, WebVector&lt;WebIDBKey&gt; primaryKeys, WebVector&lt;WebSerializedScriptValue&gt; values) { WEBKIT_ASSERT_NOT_REACHED(); }

nit: maybe it would be nice to list all of the onSuccess* methods next to one another?

&gt; Source/WebKit/chromium/public/WebIDBTransaction.h:64
&gt; +    virtual void addPendingEvents(int) { WEBKIT_ASSERT_NOT_REACHED(); }

nit: shouldn&apos;t this parameter be named?  it is not immediately obvious what this parameter means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509874</commentid>
    <comment_count>13</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-28 09:09:32 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 116722 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebIDBCallbacks.h:59
&gt; &gt; +    virtual void onSuccessWithPrefetch(WebVector&lt;WebIDBKey&gt; keys, WebVector&lt;WebIDBKey&gt; primaryKeys, WebVector&lt;WebSerializedScriptValue&gt; values) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; 
&gt; nit: maybe it would be nice to list all of the onSuccess* methods next to one another?

Will fix.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebIDBTransaction.h:64
&gt; &gt; +    virtual void addPendingEvents(int) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; 
&gt; nit: shouldn&apos;t this parameter be named?  it is not immediately obvious what this parameter means.

Yes, but then David Levin pointed out that since the parameter is unused in the function body, some compilers might warn. I suppose I could cast it to void, but then it starts getting messy :S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509877</commentid>
    <comment_count>14</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-28 09:13:10 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 116722 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review

&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/chromium/public/WebIDBTransaction.h:64
&gt; &gt; &gt; +    virtual void addPendingEvents(int) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; 
&gt; &gt; nit: shouldn&apos;t this parameter be named?  it is not immediately obvious what this parameter means.
&gt; 
&gt; Yes, but then David Levin pointed out that since the parameter is unused in the function body, some compilers might warn. I suppose I could cast it to void, but then it starts getting messy :S

Sounds like I was wrong for chromium. Sorry about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510067</commentid>
    <comment_count>15</comment_count>
      <attachid>116722</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-28 12:25:18 -0800</bug_when>
    <thetext>Comment on attachment 116722
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:124
&gt; +void IDBCursorBackendImpl::prefetchContinue(int n, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, ExceptionCode&amp; ec)

Should a more explicit name than &quot;n&quot; be used, e.g. numberToFetch? In the method signature it&apos;s pretty obvious, but...

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:141
&gt; +    for (int i = 0; i &lt; n; ++i) {

...here in the middle of the code &quot;n&quot; reads like a poorly named local variable, not an argument.

Also, since i isn&apos;t used, would it be more readable as: for ( ; numberToFetch; --numberToFetch)

&gt; Source/WebCore/storage/IDBRequest.cpp:352
&gt; +        if (m_result-&gt;type() == IDBAny::IDBCursorWithValueType)

Use &quot;else if&quot; for readability?

&gt; Source/WebCore/storage/IDBTransactionBackendImpl.cpp:152
&gt; +    m_pendingEvents += n;

Should m_pendingEvents ever go negative? If not, add assertion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510579</commentid>
    <comment_count>16</comment_count>
      <attachid>116722</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-11-29 01:07:53 -0800</bug_when>
    <thetext>Comment on attachment 116722
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review

&gt; Source/WebKit/chromium/ChangeLog:29
&gt; +        * src/WebIDBCallbacksImpl.cpp:

There don&apos;t seem to be any changes to WebIDBCallbacksImpl in here.

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:143
&gt; +            cursor-&gt;m_cursor = 0;

How does this work?  If something else set the backingstore&apos;s cursor to null, break.  Or if the backingstore&apos;s cursor ran out of elements, break.  What else sets the backingstore&apos;s cursor = null?

&gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:169
&gt; +            bool ok = m_cursor-&gt;continueFunction();

I suppose we never implemented cursor-&gt;continue(int) that could be used here.

&gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:950
&gt; +            m_iterator = m_transaction-&gt;createIterator();

I&apos;m guessing that one of lines 948/950 is unneeded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510739</commentid>
    <comment_count>17</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 06:51:55 -0800</bug_when>
    <thetext>Thanks very much for the comments!

(In reply to comment #15)
&gt; (From update of attachment 116722 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:124
&gt; &gt; +void IDBCursorBackendImpl::prefetchContinue(int n, PassRefPtr&lt;IDBCallbacks&gt; prpCallbacks, ExceptionCode&amp; ec)
&gt; 
&gt; Should a more explicit name than &quot;n&quot; be used, e.g. numberToFetch? In the method signature it&apos;s pretty obvious, but...

numberToFetch sounds good. Changing to that.

&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:141
&gt; &gt; +    for (int i = 0; i &lt; n; ++i) {
&gt; 
&gt; ...here in the middle of the code &quot;n&quot; reads like a poorly named local variable, not an argument.
&gt; 
&gt; Also, since i isn&apos;t used, would it be more readable as: for ( ; numberToFetch; --numberToFetch)

Unless you feel strongly about it, I prefer the for loop with the i variable even though it&apos;s not actually used in the loop body. I just find that quicker to read.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBRequest.cpp:352
&gt; &gt; +        if (m_result-&gt;type() == IDBAny::IDBCursorWithValueType)
&gt; 
&gt; Use &quot;else if&quot; for readability?

Done.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBTransactionBackendImpl.cpp:152
&gt; &gt; +    m_pendingEvents += n;
&gt; 
&gt; Should m_pendingEvents ever go negative? If not, add assertion?

Adding the assertion.


(In reply to comment #16)
&gt; (From update of attachment 116722 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116722&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:29
&gt; &gt; +        * src/WebIDBCallbacksImpl.cpp:
&gt; 
&gt; There don&apos;t seem to be any changes to WebIDBCallbacksImpl in here.

I&apos;ll re-generate the changelogs.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:143
&gt; &gt; +            cursor-&gt;m_cursor = 0;
&gt; 
&gt; How does this work?  If something else set the backingstore&apos;s cursor to null, break.  Or if the backingstore&apos;s cursor ran out of elements, break.  What else sets the backingstore&apos;s cursor = null?

m_cursor could be null when this function is called if the cursor has previously run out of elements. This check could be broken out of the for-loop if you think that would make it more readable?

&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.cpp:169
&gt; &gt; +            bool ok = m_cursor-&gt;continueFunction();
&gt; 
&gt; I suppose we never implemented cursor-&gt;continue(int) that could be used here.

Do you mean the IDBCursor advance() function? Yes, that&apos;s still on the todo list.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBLevelDBBackingStore.cpp:950
&gt; &gt; +            m_iterator = m_transaction-&gt;createIterator();
&gt; 
&gt; I&apos;m guessing that one of lines 948/950 is unneeded.

Right. Removed 948.



I&apos;m also making a change to IDBRequest::dispatchEvent(), because it wasn&apos;t actually working as I expected. We need to hold on to the cursor m_result, because if the onsuccess handler calls continue() then it will reset m_result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510740</commentid>
    <comment_count>18</comment_count>
      <attachid>116961</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 06:52:35 -0800</bug_when>
    <thetext>Created attachment 116961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510798</commentid>
    <comment_count>19</comment_count>
      <attachid>116976</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-29 08:29:10 -0800</bug_when>
    <thetext>Created attachment 116976
Patch

Fix another s/n/numberToFetch/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511918</commentid>
    <comment_count>20</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 11:11:53 -0800</bug_when>
    <thetext>Tony: would you like to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511949</commentid>
    <comment_count>21</comment_count>
      <attachid>117237</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 11:32:50 -0800</bug_when>
    <thetext>Created attachment 117237
Patch

Don&apos;t set cursor-&gt;m_cursor = 0 when sizeEstimate &gt; kMaxSizeEstimate, as pointed out by Joshua.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511997</commentid>
    <comment_count>22</comment_count>
      <attachid>117237</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-11-30 12:15:15 -0800</bug_when>
    <thetext>Comment on attachment 117237
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=117237&amp;action=review

Just some minor style nits.  @jsbell: Does this look good to you?

&gt; Source/WebCore/storage/IDBCallbacks.h:59
&gt; +    virtual void onSuccessWithPrefetch(Vector&lt;RefPtr&lt;IDBKey&gt; &gt; keys, Vector&lt;RefPtr&lt;IDBKey&gt; &gt; primaryKeys, Vector&lt;RefPtr&lt;SerializedScriptValue&gt; &gt; values) = 0;

Can these be const references to avoid copying the vectors?

&gt; Source/WebCore/storage/IDBCursorBackendImpl.h:73
&gt; +    static void prefetchContinueInternal(ScriptExecutionContext*, PassRefPtr&lt;IDBCursorBackendImpl&gt;, int, PassRefPtr&lt;IDBCallbacks&gt;);

Nit: I would name the int since it&apos;s not obvious from the name what it is for.

&gt; Source/WebCore/storage/IDBKey.h:83
&gt; +        idbKey-&gt;m_sizeEstimate = 100;

Maybe add a comment of why 100 here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512006</commentid>
    <comment_count>23</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-11-30 12:31:53 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 117237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117237&amp;action=review
&gt; 
&gt; Just some minor style nits.  @jsbell: Does this look good to you?

LGTM, although since you point it out I&apos;m also unsure about the 100; string and array should have overhead for the length prefix... looking at ipc/ipc_message_utils.h: and base/pickle.cc only sizeof(int) extra needs to be accounted for in both cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512030</commentid>
    <comment_count>24</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 12:47:22 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 117237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117237&amp;action=review

Thanks very much for the review!

&gt; 
&gt; Just some minor style nits.  @jsbell: Does this look good to you?
&gt; 
&gt; &gt; Source/WebCore/storage/IDBCallbacks.h:59
&gt; &gt; +    virtual void onSuccessWithPrefetch(Vector&lt;RefPtr&lt;IDBKey&gt; &gt; keys, Vector&lt;RefPtr&lt;IDBKey&gt; &gt; primaryKeys, Vector&lt;RefPtr&lt;SerializedScriptValue&gt; &gt; values) = 0;
&gt; 
&gt; Can these be const references to avoid copying the vectors?

Done.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBCursorBackendImpl.h:73
&gt; &gt; +    static void prefetchContinueInternal(ScriptExecutionContext*, PassRefPtr&lt;IDBCursorBackendImpl&gt;, int, PassRefPtr&lt;IDBCallbacks&gt;);
&gt; 
&gt; Nit: I would name the int since it&apos;s not obvious from the name what it is for.

Done.

&gt; 
&gt; &gt; Source/WebCore/storage/IDBKey.h:83
&gt; &gt; +        idbKey-&gt;m_sizeEstimate = 100;
&gt; 
&gt; Maybe add a comment of why 100 here?

As per Josh&apos;s comment, I broke this out into a named constant that I&apos;m adding to each key object. I don&apos;t think the value is that important, I just want to add a little something to each key to reflect that there&apos;s some overhead to each of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512032</commentid>
    <comment_count>25</comment_count>
      <attachid>117253</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-11-30 12:48:34 -0800</bug_when>
    <thetext>Created attachment 117253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512662</commentid>
    <comment_count>26</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-12-01 02:54:57 -0800</bug_when>
    <thetext>Committed r101645: &lt;http://trac.webkit.org/changeset/101645&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116378</attachid>
            <date>2011-11-23 10:08:11 -0800</date>
            <delta_ts>2011-11-24 07:13:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111123180810.patch</filename>
            <type>text/plain</type>
            <size>29009</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE5NjY1NGRiMGJmNzQw
YTFjNDA4NTVlMWQ4NzA5ZDU4ZTA3Y2RjZi4uYjJlNWY2Y2Y0MzZiZmNiMzdiMjIzNDM3ZjIxYTNh
MTFjOGNmMTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDExLTExLTIzICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJz
b3IgcHJlLWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgc2VtYW50aWNzLgor
ICAgICAgICBBY3R1YWwgcHJlLWZldGNoaW5nIHdpbGwgbm90IGhhcHBlbiBpbiBEdW1wUmVuZGVy
VHJlZS4KKyAgICAgICAgQ2hyb21pdW0gd2lsbCByZXF1ZXN0IHByZS1mZXRjaGluZyBhbmQgaGF2
ZSB0ZXN0cyBmb3IgaXQuCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogc3RvcmFnZS9JREJD
dXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJh
Y2spOgorICAgICAgICAgIEFkZHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBldmVyeXRpbWUg
dGhlIG9uc3VjY2VzcyBoYW5kbGVyIGhhcworICAgICAgICAgIGV4ZWN1dGVkIG9uIGEgY3Vyc29y
LiBUaGlzIGFsbG93cyB0aGUgY3Vyc29yIHRvIHNlZSBpZiBhIG5ldyBjYWxsCisgICAgICAgICAg
dG8gY29udGludWUoKSB3YXMgbWFkZSBpbiB0aGUgb25zdWNjZXNzIGhhbmRsZXIuCisgICAgICAg
ICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpw
cmVmZXRjaENvbnRpbnVlSW50ZXJuYWwpOgorICAgICAgICAgIFRoaXMgaXMgdGhlIGZ1bmN0aW9u
IHRoYXQgZG9lcyBhY3R1YWwgcHJlLWZldGNoaW5nLiBXaGVuIGNhbGxlZCwKKyAgICAgICAgICBp
dCB3aWxsIGF0dGVtcHQgdG8gc3RlcCB0aGUgY3Vyc29yIHVwIHRvIG4gc3RlcHMgYW5kIHNlbmQg
dGhlCisgICAgICAgICAgcmVzdWx0cyBiYWNrIHZpYSB0aGUgbmV3IG9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaCgpIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6
OnByZWZldGNoUmVzZXQpOgorICAgICAgICAgIFRoaXMgcmVzZXRzIHRoZSBjdXJzb3IgdG8gdGhl
IHBvc2l0aW9uIGl0IHdhcyBhdCBiZWZvcmUgdGhlIGxhc3QKKyAgICAgICAgICBwcmVmZXRjaCBj
YWxsLgorICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFj
ayk6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNsaWNlVG9WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vy
c29ySW1wbENvbW1vbjo6c2F2ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9w
dGlvbnM6OkN1cnNvckltcGxDb21tb246OnJlc2V0VG9TYXZlZFBvc2l0aW9uKToKKyAgICAgICAg
ICBBZGQgZnVuY3Rpb25zIHRvIHNhdmUgYW5kIHJlc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vy
c29yLgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3NXaXRoQ2FjaGVkQ29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAgIFVwZGF0ZSBk
aXNwYXRjaEV2ZW50KCkgdG8gY2FsbCB0aGUgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQor
ICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVx
dWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICAgQWxsb3cgZm9yIGFkZGlu
ZyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGV4dHJhIHBlbmRpbmcgZXZlbnRzLgorICAgICAgICAg
IFdoZW4gYSBjdXJzb3IgcHJlLWZldGNoZXMgbiBlbGVtZW50cywgdGhlIHRyYW5zYWN0aW9uIHNo
b3VsZAorICAgICAgICAgIGV4cGVjdCB0byBzZWUgbiBleHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisg
ICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgICog
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMS0xMS0yMyAg
QW5uYSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSByZWFk
eVN0YXRlIGZyb20gVGV4dFRyYWNrIHRvIEhUTUxUcmFja0VsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggZWE4MDI4MjQ1ZTZlOTY2NzQ5N2JmM2JhMzJhNGE4MDQ1YjNiODQwNS4u
ZmVjYWI0MjI0MThlYzIxNzk0ZmRlMjNhNGE0MTMzYWE0OGUwODY0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMS0xMS0yMyAgSGFucyBXZW5uYm9yZyAg
PGhhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ3Vyc29yIHByZS1mZXRj
aGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMw
MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
cGx1bWJpbmcgZm9yIG5ldyBwcmUtZmV0Y2hpbmcgcmVsYXRlZCBmdW5jdGlvbnMuCisKKyAgICAg
ICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNh
bGxiYWNrczo6b25TdWNjZXNzV2l0aENhY2hlZENvbnRpbnVhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKiBw
dWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6ZGVs
ZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnByZWZldGNoQ29u
dGludWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnByZWZldGNoUmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNr
KToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCVHJhbnNhY3Rpb246OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9J
REJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkNhbGxiYWNrc1Byb3h5
OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzV2l0aENh
Y2hlZENvbnRpbnVhdGlvbik6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NI
YW5kbGVyQ2FsbGJhY2spOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVl
KToKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0
KToKKyAgICAgICAgKiBzcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgor
ICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViSURCQ2FsbGJhY2tzSW1wbDo6b25TdWNjZXNzV2l0aENhY2hlZENvbnRpbnVhdGlvbik6Cisg
ICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURC
Q3Vyc29ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnByZWZl
dGNoQ29udGludWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBsOjpwcmVmZXRj
aFJlc2V0KToKKyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5oOgorCiAyMDExLTExLTIz
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGRpbmcgZW1iZWRkaW5nIGNvZGUgZm9yIEdldFVzZXJN
ZWRpYQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNmIwYTA0
MGY5ZmM0ZDJiODcwZDRmYWM0YWY0YzQ2YWEwZjAzNDA1Yy4uYjY0ZGIzYjNkN2NkMDIwOTVhMmJj
NTY3ODIxZjEyYmYyM2RhMWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdT
dG9yZS5oCkBAIC05NCw2ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBTdHJpbmcg
dmFsdWUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29y
ZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpID0gMDsKICAgICAgICAg
dmlydHVhbCBpbnQ2NF90IGluZGV4RGF0YUlkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2F2ZVBvc2l0aW9uKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUb1NhdmVkUG9z
aXRpb24oaW50IGRlbHRhKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsK
ICAgICAgICAgdmlydHVhbCB+Q3Vyc29yKCkgeyB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDYWxsYmFja3MuaAppbmRleCA2ODE1OWM1MWRjMTBlYzEzMGE0ZTRmN2E2YjkxYzZmYzlh
ZTliYjEzLi4xNDEwNmQ4MjI2NzcwOTkxZDcxY2M1ZDBhMjRkNDA0NjE3OTEwNjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aENvbnRpbnVhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENh
Y2hlZENvbnRpbnVhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFBy
ZWZldGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2
YWx1ZXMpID0gMDsgLy8gRklYTUU6IFdvcmsgb24gdGhlIG5hbWluZy4KICAgICB2aXJ0dWFsIHZv
aWQgb25CbG9ja2VkKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3Bw
CmluZGV4IGVkYzZlODNlYmU5OTVlMTk5OWQ2ZmIwN2MyY2FlMGQ1ZmY0ODliZmQuLjE2NmMyZGQ2
ZDNkMDllNjRlYTMxZDcwZjYwMWFlNDYwNTk5ZGMxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvci5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVG
dW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAv
LyBGSVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3
YXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJhY2sKICAgICAvLyAgICAgICAgd2lsbCBi
ZSBvbiB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vyc29yIHdhcyBjYWxsZWQgb24uIElzIHRo
aXMgcmlnaHQ/CiAgICAgaWYgKG1fcmVxdWVzdC0+cmVzZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rp
b24uZ2V0KCkpKSB7Ci0gICAgICAgIG1fYmFja2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1f
cmVxdWVzdCwgZWMpOwogICAgICAgICBtX3JlcXVlc3QtPnNldEN1cnNvcih0aGlzKTsKKyAgICAg
ICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1ZXN0LCBlYyk7CiAgICAg
fSBlbHNlCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VS
UjsKIH0KQEAgLTEyMyw2ICsxMjMsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJz
b3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICBy
ZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9iYWNrZW5kLT5wb3N0U3VjY2Vzc0hhbmRsZXJD
YWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCmluZGV4IDc5
OTA4NDQxMTMyMGJlZGRmNDlkMGViYWVhMmUxMTk5YTEzZTY3YjEuLmJhNDlkODI3Y2Q0MDViMzlj
MmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApA
QCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NS
ZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVz
dD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKwogcHJvdGVjdGVk
OgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJ
REJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggZDE2OThk
MGZmYTA4MGUzMzM1N2YxZjY0NWVkNDJmMjYzNDU3YjM2MS4uZmM3YWIwOTI1ZDI3ZGFlMzQzM2Zm
ZWE4YTZlOTQ1NWFhZmZjMWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJD
dXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTEyMyw2ICsxMjMsNTIgQEAgdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcywKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihtX2N1cnNvci0+cHJp
bWFyeUtleSgpLCBwcnBDYWxsYmFja3MsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAor
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbiwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSB0aGlzOworICAgIFJlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKKworICAgIGlmICghbV90
cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCwgY3Vyc29yLCBuLCBjYWxsYmFja3Mp
KSkKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwor
fQorCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+
IHBycEN1cnNvciwgaW50IG4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7
CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisK
KyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBmb3VuZEtleXM7CisgICAgVmVjdG9yPFJlZlB0
cjxJREJLZXk+ID4gZm91bmRQcmltYXJ5S2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiBmb3VuZFZhbHVlczsKKworICAgIGlmIChjdXJzb3ItPm1fY3Vyc29y
KQorICAgICAgICBjdXJzb3ItPm1fY3Vyc29yLT5zYXZlUG9zaXRpb24oKTsKKworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGlmICghY3Vyc29yLT5tX2N1cnNvciB8
fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVGdW5jdGlvbihOVUxMKSkgeworICAgICAgICAg
ICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29yLT5tX2N1cnNvci0+a2V5KCkpOworICAg
ICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29yLT5wcmltYXJ5S2V5
KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpKSk7CisgICAgfQorCisgICAg
aWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZvdW5kS2V5
cy5zaXplKCkgLSAxKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaChmb3Vu
ZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJREJDdXJz
b3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVz
ZWRQcmVmZXRjaGVzKQoreworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVudHMoLXVu
dXNlZFByZWZldGNoZXMpOworICAgIG1fY3Vyc29yLT5yZXNldFRvU2F2ZWRQb3NpdGlvbih1c2Vk
UHJlZmV0Y2hlcyk7Cit9CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNsb3NlKCkKIHsK
ICAgICBpZiAobV9jdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmgKaW5kZXggZWM1ODUyMDc4MjdhMmQyMmEzZGUyY2E3YTg2ZTNkZWJiM2M3NjM2
NC4uNThkZmYzYzUzNDBkMzAyMTM0YTEwMzY5ODQxNDg0NTM5NWQyZDA4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtNjEsMTIgKzYxLDE2
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2Rl
Jik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG4sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRj
aFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpOwogICAgIHZv
aWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2so
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFj
a2VuZEltcGwoUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIElEQkN1cnNvcjo6
RGlyZWN0aW9uLCBDdXJzb3JUeXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnRp
bnVlRnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+KTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBp
bnQgbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIFJlZlB0cjxJREJCYWNraW5n
U3RvcmU6OkN1cnNvcj4gbV9jdXJzb3I7CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gbV9kaXJl
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZElu
dGVyZmFjZS5oCmluZGV4IDNmNmQ5ZmQ5MDZhNjI5MzI4ZWViNzI0ZDdlMmFjMWE3NTViNWNjY2Qu
LmMxNmQ0NGZjNWJjNmVmYWNmN2JlZDU0OTVhZWJjZDgzYjkxMmJjNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC02MSw2
ICs2MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRp
bnVlKGludCBuLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQg
dW51c2VkUHJlZmV0Y2hlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRs
ZXJDYWxsYmFjaygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDhj
ZmY5MWJhOWQxYWNlZDQ1OTIzM2Q5M2QwMzRlNjlhNWIyMTlhYjguLjJmYTY0YjgxZGQ3YmM5Yzhm
Yzg0NTgxNjZiMmE3ZTFlOGZiOGZlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA5LDYgKzkwOSwxMyBAQCBib29sIElE
QkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgVmVjdG9yPGNo
YXI+IHNsaWNlVG9WZWN0b3IoY29uc3QgTGV2ZWxEQlNsaWNlJiBzbGljZSkgeworICAgIFZlY3Rv
cjxjaGFyPiB2OworICAgIGZvciAoY29uc3QgY2hhciogY3AgPSBzbGljZS5iZWdpbigpOyBjcCAh
PSBzbGljZS5lbmQoKTsgKytjcCkKKyAgICAgICAgdi5hcHBlbmQoKmNwKTsKKyAgICByZXR1cm4g
djsKK30KKwogbmFtZXNwYWNlIHsKIAogc3RydWN0IEN1cnNvck9wdGlvbnMgewpAQCAtOTI5LDYg
KzkzNiwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyPiBvYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIoKSA9IDA7IC8vIEZJWE1FOiBJIGRv
bid0IHRoaW5rIHRoaXMgaXMgYWN0dWFsbHkgdXNlZCwgc28gZHJvcCBpdC4KICAgICB2aXJ0dWFs
IGludDY0X3QgaW5kZXhEYXRhSWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNhdmVQb3NpdGlv
bigpIHsKKyAgICAgICAgQVNTRVJUKG1faXRlcmF0b3ItPmlzVmFsaWQoKSk7CisgICAgICAgIG1f
c2F2ZWRQb3NpdGlvbiA9IHNsaWNlVG9WZWN0b3IobV9pdGVyYXRvci0+a2V5KCkpOworICAgIH07
CisgICAgdmlydHVhbCB2b2lkIHJlc2V0VG9TYXZlZFBvc2l0aW9uKGludCBkZWx0YSkgeworICAg
ICAgICBBU1NFUlQoIW1fc2F2ZWRQb3NpdGlvbi5pc0VtcHR5KCkpOworICAgICAgICBtX2l0ZXJh
dG9yLT5zZWVrKG1fc2F2ZWRQb3NpdGlvbik7CisgICAgICAgIEFTU0VSVChtX2l0ZXJhdG9yLT5p
c1ZhbGlkKCkpOworICAgICAgICBBU1NFUlQoZGVsdGEgPj0gMCk7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgZGVsdGE7ICsraSkgeworICAgICAgICAgICAgbV9pdGVyYXRvci0+bmV4dCgp
OworICAgICAgICAgICAgQVNTRVJUKG1faXRlcmF0b3ItPmlzVmFsaWQoKSk7CisgICAgICAgIH0K
KyAgICAgICAgbV9zYXZlZFBvc2l0aW9uLmNsZWFyKCk7CisgICAgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGxvYWRDdXJyZW50Um93KCkgPSAwOwpA
QCAtOTQ2LDYgKzk2OCw3IEBAIHByb3RlY3RlZDoKICAgICBDdXJzb3JPcHRpb25zIG1fY3Vyc29y
T3B0aW9uczsKICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIFJl
ZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKKyAgICBWZWN0b3I8Y2hhcj4gbV9zYXZlZFBvc2l0
aW9uOwogfTsKIAogYm9vbCBDdXJzb3JJbXBsQ29tbW9uOjpmaXJzdFNlZWsoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggMzA5NmQ3ZmYwZDBkOWFlNDVjNGE2NzM5YjU1
YWQ1YTU4N2E5YTk1MC4uMWMzNzk5NmNhZTAzMDliMGJhYzdlMjRmNzBjNDczOWJlNjQyNGFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0yNzYsNiArMjc2LDExIEBA
IHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCiAgICAgZW5xdWV1
ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKIH0KIAordm9pZCBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3NXaXRoQ2FjaGVkQ29udGludWF0aW9uKCkKK3sKKyAgICBvblN1Y2Nlc3NXaXRoQ29udGlu
dWF0aW9uKCk7Cit9CisKIGJvb2wgSURCUmVxdWVzdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QKIHsKICAgICAvLyBGSVhNRTogSW4gYW4gaWRlYWwgd29ybGQsIHdlIHNob3VsZCByZXR1cm4g
dHJ1ZSBhcyBsb25nIGFzIGFueW9uZSBoYXMgYSBvciBjYW4KQEAgLTM0NSw2ICszNTAsMTQgQEAg
Ym9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQog
ICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQgJiYgbV9y
ZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvclR5cGUgJiYgbV9y
ZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCiAgICAgICAg
IG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAorICAgIGlmIChtX3Jlc3VsdCkgeworICAgICAg
ICAvLyBOb3RpZnkgY3Vyc29yIHRoYXQgb25zdWNjZXNzIGV2ZW50IGhhcyBiZWVuIGNvbXBsZXRl
ZC4KKyAgICAgICAgaWYgKG1fcmVzdWx0LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JUeXBl
KQorICAgICAgICAgICAgbV9yZXN1bHQtPmlkYkN1cnNvcigpLT5wb3N0U3VjY2Vzc0hhbmRsZXJD
YWxsYmFjaygpOworICAgICAgICBpZiAobV9yZXN1bHQtPnR5cGUoKSA9PSBJREJBbnk6OklEQkN1
cnNvcldpdGhWYWx1ZVR5cGUpCisgICAgICAgICAgICBtX3Jlc3VsdC0+aWRiQ3Vyc29yV2l0aFZh
bHVlKCktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CisgICAgfQorCiAgICAgaWYgKG1f
dHJhbnNhY3Rpb24pIHsKICAgICAgICAgLy8gSWYgYW4gZXJyb3IgZXZlbnQgYW5kIHRoZSBkZWZh
dWx0IHdhc24ndCBwcmV2ZW50ZWQuLi4KICAgICAgICAgaWYgKGRvbnRQcmV2ZW50RGVmYXVsdCAm
JiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuaAppbmRleCAxNTM1NTNjMTZjYmM3ZmNkNjQzM2FiNzFjM2MzNWZhNzg1
MzBkNDlmLi40YjljZTM0Yzc5YTJiOWNlMGEwOGI3MjViYmZlODhhZjE4YzA2NjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ2FjaGVkQ29udGludWF0aW9u
KCk7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRy
PElEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFj
aCB0aGUgcmVuZGVyZXIgc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4IGI0NTI2MDAzMWRjNzQyYWZlMWY3NGI2
ZTA5NThjMDE3NTZlMDQ4YTQuLmM0ZDY5NzY3ZjlhZjZiZDdiYzA2NTNjMmU5ZTY1MTk1MmMyMDk5
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcApAQCAtMTQ3LDYgKzE0NywxMSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEltcGw6OnVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJz
bwogICAgIG1fb3BlbkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CiAKK3ZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyhpbnQgbikKK3sKKyAgICBtX3BlbmRp
bmdFdmVudHMgKz0gbjsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRD
b21wbGV0ZVRhc2tFdmVudHMoKQogewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApp
bmRleCAzMjBkMmJjNmI0MTU2MTQ1YWI4NWU5NmViYmFiYzZjNTkyMTMzMGQ3Li4yZjljMmJhODQx
MmEyOWRiOWY5NjNjYmViZDFjZTU2YWVhNzNiZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNTQsNiArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxi
YWNrcyogY2FsbGJhY2tzKSB7IG1fY2FsbGJhY2tzID0gY2FsbGJhY2tzOyB9CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCk7CiAKICAgICB2b2lkIHJ1bigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCA0NGI1NTYzYmRiYmNmNDdlYTYxZDk4ZGY2NGQ0MGNmMDE4
ZDU0NjIwLi4wMDNkYmZkY2NmNTQyOTJiODJhYWIyYzM1ZjJhZGJjZTBmNTFkNjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRD
YWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkNhbGxiYWNrcy5oCmluZGV4IDAxNWEwOWNmNDIxZGQwYTAwMjQ0ZWJiZDM0MzY3MTI1ZDUx
NzVkYjAuLmIwZGJlYThkZjc5NmY3ZWIxNDIxNjk3ZWExNGU5ODFmN2E4ZTRjNDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIFdlYklEQkNhbGxiYWNrc19oCiAKICNpbmNsdWRlICJXZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTU0LDcgKzU1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoV2ViSURC
VHJhbnNhY3Rpb24qKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDYWNoZWRDb250aW51YXRpb24oKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goV2ViVmVjdG9yPFdlYklEQktleT4ga2V5cywgV2ViVmVjdG9yPFdlYklEQktleT4g
cHJpbWFyeUtleXMsIFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlcykg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vy
c29yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAppbmRl
eCAxZjE5NDdlMGJhZWY2ZGIxNzI0OTc5YTdhOTEyYjg1MTQxMTAyY2JiLi42MmM1MDEzOWQ5Mzhm
NzI4MjBmYzVmNjVhZGZjMTQ3OTk3NTcxMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDdXJzb3IuaApAQCAtNjMsNyArNjMsMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJ
REJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJL
ZXkmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihXZWJJ
REJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQgbiwgV2ViSURC
Q2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVz
LCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IH0gLy8gT25s
eSB1c2VkIGluIGZyb250ZW5kLgogCiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCQ3Vyc29yKCkgeyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2Fj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24u
aAppbmRleCA3NDkxOWE4MDZhNmMwNzFhZTVkNzFlNjgxOTJlM2ZhNDBjODFlMGM5Li43NjkzODBh
MzQxZTFkYzk1NjhlYmEyYWYzNDA1ZDlkNjY5NGU0NjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKQEAgLTYxLDYgKzYxLDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
UGVuZGluZ0V2ZW50cyhpbnQpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKIHBy
b3RlY3RlZDoKICAgICBXZWJJREJUcmFuc2FjdGlvbigpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IDBlZWMxNWIwY2I1
ZGIxZmI4MWIxMDI1ZTVhYzgzMGVlYmZjODgwYmQuLjE5YzIxNTBkZDRjZmJkZDY3NWM2ZGUyNDg2
ZGFjOWE0ZjEwMjEzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5jcHAKQEAgLTk5LDYgKzk5LDIzIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJv
eHk6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nl
c3NXaXRoQ29udGludWF0aW9uKCk7CiB9CiAKK3ZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3Vj
Y2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4gdmFsdWVzKQoreworICAgIGNvbnN0IHNpemVfdCBuID0ga2V5cy5zaXplKCk7CisK
KyAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJLZXlzKG4pOworICAgIFdlYlZlY3RvcjxXZWJJ
REJLZXk+IHdlYlByaW1hcnlLZXlzKG4pOworICAgIFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHdlYlZhbHVlcyhuKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsg
KytpKSB7CisgICAgICAgIHdlYktleXNbaV0gPSBXZWJJREJLZXkoa2V5c1tpXSk7CisgICAgICAg
IHdlYlByaW1hcnlLZXlzW2ldID0gV2ViSURCS2V5KHByaW1hcnlLZXlzW2ldKTsKKyAgICAgICAg
d2ViVmFsdWVzW2ldID0gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKHZhbHVlc1tpXSk7CisgICAg
fQorCisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaCh3ZWJLZXlzLCB3ZWJQ
cmltYXJ5S2V5cywgd2ViVmFsdWVzKTsKK30KKwogdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25C
bG9ja2VkKCkKIHsKICAgICBtX2NhbGxiYWNrcy0+b25CbG9ja2VkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaAppbmRleCAwMzVjODg4ZjI2OGM5
MWY1MGZmZmVmYTgxZGFlYTMwZGU1NDMwMWYwLi40OGMwZDQ4YjNmZmMxZjJkNGU2MmFjM2RkNDUx
ZjNjNThkYTc4MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250
aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENhY2hlZENvbnRpbnVh
dGlvbigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzV2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IGtleXMsIFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRy
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMpOwogICAgIHZpcnR1YWwg
dm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IDdkYWI2YTI4ZmEyMGZh
OGRjNTFiNmY3N2FkMjUwZmZiN2MwNWY3YTQuLjdkNDZlODRhZDBjNGQ0NmJmMWY4OTNlYTgxMzAw
NGMxM2M2MGYzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1
cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtODksNiArODksMTEgQEAgdm9pZCBJREJDdXJzb3JC
YWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsIEUKICAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94
eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQoreworICAgIG1faWRiQ3Vyc29yLT5wb3N0
U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCBkNzI1MzYwNTAyOWNj
OTJiZjhhMGE4NjA1ZDA0NDNlODU1ODFiZjAyLi43Njk2ZGFmZGQxNDQ2MzQ5MTQ0M2M3OWQ1MWZi
ZjAxNTc3MTUwZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
dXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
dXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOworICAg
IHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBuLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9IC8vIE9ubHkgdXNlZCBpbiB0aGUgYmFja2VuZC4KKyAgICB2aXJ0dWFsIHZvaWQg
cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE9ubHkgdXNlZCBpbiB0aGUgYmFja2VuZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKIAogcHJpdmF0ZToK
ICAgICBJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJDdXJzb3I+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tl
bmRQcm94eS5oCmluZGV4IGVjMmRmOWQyNWNiMjdlYWU5OWEzZjM2MzdjZDdmYzY1NmJkYjU1MGQu
LmFmZWYwMDgyY2RmMTY0NWE3N2MzMzFiNzgwNmUzYjRhZGUxY2Y5ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHku
aApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNr
cyhXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlck9wZW5DdXJzb3IoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGwqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KIAogICAgIFdlYklEQlRyYW5zYWN0aW9uKiBnZXRXZWJJREJUcmFu
c2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViSURCVHJhbnNhY3Rpb24uZ2V0KCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNw
cAppbmRleCAxODVmZWExNjhkM2U1YTE3NWVkYzNlNTg0MzE3OWI5NmI4YzExYjNhLi5kMmYwNzRl
Y2RkMmZlZDEwNDE2Njg5Nzc3ODQwY2U0M2E4NzQ4Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcApAQCAtOTUsNiArOTUsMTEg
QEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkK
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOwogfQogCit2b2lk
IFdlYklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2Vzc1dpdGhDYWNoZWRDb250aW51YXRpb24oKQor
eworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoQ2FjaGVkQ29udGludWF0aW9uKCk7Cit9
CisKIHZvaWQgV2ViSURCQ2FsbGJhY2tzSW1wbDo6b25CbG9ja2VkKCkKIHsKICAgICBtX2NhbGxi
YWNrcy0+b25CbG9ja2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmgKaW5kZXggYmU4NTQxYjcwYzVmYjI3NGFkYjIxNmE5ZjQxN2FlNGZm
NDZlMWMzOC4uMWE0Y2JmYzg5MTk2YmEwYjA3OWJkZjQ0ZmM1ZGJmZWZmZDlkMDc3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApAQCAt
NDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJU
cmFuc2FjdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlJik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51
YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENhY2hlZENvbnRpbnVhdGlv
bigpOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggNWQ2Nzc1
N2Y5MzkzNzg4ZTRlZTQ1YjhhYWE1YTk2NGNkZDI5MmY5ZS4uZWJjZTM5Y2MwZGQyNzA4ZmY3ODQ3
NzU0ZjdhZjE1NThjOTcyZDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIHZvaWQgV2ViSURCQ3Vyc29y
SW1wbDo6ZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2Vw
dGlvbkNvCiAgICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5kZWxldGVGdW5jdGlvbihJREJDYWxsYmFj
a3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9CiAKK3ZvaWQgV2Vi
SURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbiwgV2ViSURCQ2FsbGJhY2tzKiBj
YWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRiQ3Vyc29yQmFja2Vu
ZC0+cHJlZmV0Y2hDb250aW51ZShuLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRy
KGNhbGxiYWNrcykpLCBlYyk7Cit9CisKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hS
ZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1f
aWRiQ3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hSZXNldCh1c2VkUHJlZmV0Y2hlcywgdW51c2VkUHJl
ZmV0Y2hlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDdXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
dXJzb3JJbXBsLmgKaW5kZXggYzIzNzkyMDczY2NkMjRhNGYzMDQ4NjNlZDUzMzkyNmFlMGRkZDZj
MC4uZmQwMTRmYTA2N2QwMGFkYzJlY2IzMjhmYjRiYmJlZDM4M2UwODQxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaApAQCAtNTEsNiArNTEsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJh
Y2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlv
bihXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IHByZWZldGNoQ29udGludWUoaW50IG4sIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMs
IGludCB1bnVzZWRQcmVmZXRjaGVzKTsKIAogIHByaXZhdGU6CiAgICAgV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3JCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116508</attachid>
            <date>2011-11-24 07:13:25 -0800</date>
            <delta_ts>2011-11-25 04:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111124151323.patch</filename>
            <type>text/plain</type>
            <size>26775</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM3NDlmNmVjNjA3NDUz
YzNmMTA2MDk4N2U2MjA5MGQ3NGJlNzFiNy4uNTFhZTA4ZmQ0ZWYzNTNmZmViZDMyYWZhZjMxMjk4
ODRlNjVhYThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDExLTExLTIzICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJz
b3IgcHJlLWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBkb2Vzbid0IGNoYW5nZSBhbnkgc2VtYW50aWNzLgor
ICAgICAgICBBY3R1YWwgcHJlLWZldGNoaW5nIHdpbGwgbm90IGhhcHBlbiBpbiBEdW1wUmVuZGVy
VHJlZS4KKyAgICAgICAgQ2hyb21pdW0gd2lsbCByZXF1ZXN0IHByZS1mZXRjaGluZyBhbmQgaGF2
ZSB0ZXN0cyBmb3IgaXQuCisKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oOgor
ICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogc3RvcmFnZS9JREJD
dXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJh
Y2spOgorICAgICAgICAgIEFkZHMgYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCBldmVyeXRpbWUg
dGhlIG9uc3VjY2VzcyBoYW5kbGVyIGhhcworICAgICAgICAgIGV4ZWN1dGVkIG9uIGEgY3Vyc29y
LiBUaGlzIGFsbG93cyB0aGUgY3Vyc29yIHRvIHNlZSBpZiBhIG5ldyBjYWxsCisgICAgICAgICAg
dG8gY29udGludWUoKSB3YXMgbWFkZSBpbiB0aGUgb25zdWNjZXNzIGhhbmRsZXIuCisgICAgICAg
ICogc3RvcmFnZS9JREJDdXJzb3IuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVm
ZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpw
cmVmZXRjaENvbnRpbnVlSW50ZXJuYWwpOgorICAgICAgICAgIFRoaXMgaXMgdGhlIGZ1bmN0aW9u
IHRoYXQgZG9lcyBhY3R1YWwgcHJlLWZldGNoaW5nLiBXaGVuIGNhbGxlZCwKKyAgICAgICAgICBp
dCB3aWxsIGF0dGVtcHQgdG8gc3RlcCB0aGUgY3Vyc29yIHVwIHRvIG4gc3RlcHMgYW5kIHNlbmQg
dGhlCisgICAgICAgICAgcmVzdWx0cyBiYWNrIHZpYSB0aGUgbmV3IG9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaCgpIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6
OnByZWZldGNoUmVzZXQpOgorICAgICAgICAgIFRoaXMgcmVzZXRzIHRoZSBjdXJzb3IgdG8gdGhl
IHBvc2l0aW9uIGl0IHdhcyBhdCBiZWZvcmUgdGhlIGxhc3QKKyAgICAgICAgICBwcmVmZXRjaCBj
YWxsLgorICAgICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFj
ayk6CisgICAgICAgICogc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAg
ICAgICogc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNsaWNlVG9WZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vy
c29ySW1wbENvbW1vbjo6c2F2ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9w
dGlvbnM6OkN1cnNvckltcGxDb21tb246OnJlc2V0VG9TYXZlZFBvc2l0aW9uKToKKyAgICAgICAg
ICBBZGQgZnVuY3Rpb25zIHRvIHNhdmUgYW5kIHJlc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vy
c29yLgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgICBVcGRhdGUgZGlzcGF0Y2hF
dmVudCgpIHRvIGNhbGwgdGhlIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkKKyAgICAgICAg
KiBzdG9yYWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6Om9u
U3VjY2Vzc1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGw6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAgIEFsbG93IGZvciBhZGRpbmcgYW4gYXJi
aXRyYXJ5IG51bWJlciBvZiBleHRyYSBwZW5kaW5nIGV2ZW50cy4KKyAgICAgICAgICBXaGVuIGEg
Y3Vyc29yIHByZS1mZXRjaGVzIG4gZWxlbWVudHMsIHRoZSB0cmFuc2FjdGlvbiBzaG91bGQKKyAg
ICAgICAgICBleHBlY3QgdG8gc2VlIG4gZXh0cmEgb25zdWNjZXNzIGNhbGxzLgorICAgICAgICAq
IHN0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6CisKIDIwMTEtMTEtMjQgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBBU1NFUlRzIGFk
ZGVkIGluIHIxMDEwODIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNhNzIwNmM1YmIz
MDhiNDU0MmE2MThmYWU1YWZkYWNlNTBiODM3NjkuLjA2YWEwMTQ3NDJmZDZkZDI4MmUyZTRlZWIz
ZTQ1ZTM4MDAxMjA4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTEtMTEtMjMgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBuZXcgcHJlLWZldGNo
aW5nIHJlbGF0ZWQgZnVuY3Rpb25zLgorCisgICAgICAgICogcHVibGljL1dlYklEQkNhbGxiYWNr
cy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3M6Om9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaCk6CisgICAgICAgICogcHVibGljL1dlYklEQkN1cnNvci5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q3Vyc29yOjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29y
OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpwb3N0U3Vj
Y2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICogcHVibGljL1dlYklEQlRyYW5zYWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlRyYW5zYWN0aW9uOjphZGRQZW5kaW5nRXZlbnRz
KToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKiBz
cmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5Ojpwb3N0U3Vj
Y2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OnByZWZldGNoQ29u
dGludWUpOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OnByZWZldGNo
UmVzZXQpOgorICAgICAgICAqIHNyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpJREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eTo6YWRkUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAqIHNy
Yy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYklEQkN1cnNvckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBsOjpwcmVmZXRjaENvbnRpbnVl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hSZXNldCk6Cisg
ICAgICAgICogc3JjL1dlYklEQkN1cnNvckltcGwuaDoKKwogMjAxMS0xMS0yMyAgR3JlZyBCaWxs
b2NrICA8Z2JpbGxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBBZGQgc2ltcGxlIGltcGxlbWVu
dGF0aW9uIGZvciB3ZWIgaW50ZW50cyBjaHJvbWl1bSBBUEkgZGF0YSBjbGFzc2VzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNmIwYTA0MGY5ZmM0ZDJiODcw
ZDRmYWM0YWY0YzQ2YWEwZjAzNDA1Yy4uYjY0ZGIzYjNkN2NkMDIwOTVhMmJjNTY3ODIxZjEyYmYy
M2RhMWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC05
NCw2ICs5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+
IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpID0gMDsKICAgICAgICAgdmlydHVhbCBpbnQ2
NF90IGluZGV4RGF0YUlkKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBvc2l0aW9u
KCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRUb1NhdmVkUG9zaXRpb24oaW50IGRl
bHRhKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKICAgICAgICAgdmly
dHVhbCB+Q3Vyc29yKCkgeyB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFj
a3MuaAppbmRleCA2ODE1OWM1MWRjMTBlYzEzMGE0ZTRmN2E2YjkxYzZmYzlhZTliYjEzLi4xZTY1
MmU0ZDYxN2JiNzczZTQxYTY5OTAzNzM5YTU2N2IyNTMyOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IHByaW1hcnlL
ZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuY3BwCmluZGV4IGVkYzZlODNlYmU5OTVlMTk5OWQ2ZmIwN2MyY2FlMGQ1ZmY0
ODliZmQuLjE2NmMyZGQ2ZDNkMDllNjRlYTMxZDcwZjYwMWFlNDYwNTk5ZGMxYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCB2b2lkIElEQkN1
cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25D
b2RlJiBlYykKICAgICAvLyBGSVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250ZXh0IGZyb20g
d2hlbiBjb250aW51ZSB3YXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJhY2sKICAgICAv
LyAgICAgICAgd2lsbCBiZSBvbiB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vyc29yIHdhcyBj
YWxsZWQgb24uIElzIHRoaXMgcmlnaHQ/CiAgICAgaWYgKG1fcmVxdWVzdC0+cmVzZXRSZWFkeVN0
YXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKSB7Ci0gICAgICAgIG1fYmFja2VuZC0+Y29udGludWVG
dW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMpOwogICAgICAgICBtX3JlcXVlc3QtPnNldEN1cnNv
cih0aGlzKTsKKyAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1
ZXN0LCBlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246
Ok5PVF9BTExPV0VEX0VSUjsKIH0KQEAgLTEyMyw2ICsxMjMsMTEgQEAgUGFzc1JlZlB0cjxJREJS
ZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9iYWNrZW5kLT5wb3N0
U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5oCmluZGV4IDc5OTA4NDQxMTMyMGJlZGRmNDlkMGViYWVhMmUxMTk5YTEzZTY3YjEuLmJh
NDlkODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51
ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NS
ZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2so
KTsKKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5j
cHAKaW5kZXggZDE2OThkMGZmYTA4MGUzMzM1N2YxZjY0NWVkNDJmMjYzNDU3YjM2MS4uZjFiZmQ3
ZjVjMTVlMjJiZmQzOWU1NjZhOGM3YzFiOWIyNTE0NDM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTEyMyw2ICsxMjMsNTIgQEAg
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IHBycENhbGxiYWNrcywKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlv
bihtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBwcnBDYWxsYmFja3MsIG1fdHJhbnNhY3Rpb24uZ2V0
KCksIGVjKTsKIH0KIAordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51
ZShpbnQgbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSB0
aGlzOworICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsK
KworICAgIGlmICghbV90cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmSURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCwgY3Vyc29y
LCBuLCBjYWxsYmFja3MpKSkKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9U
X0FMTE9XRURfRVJSOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENv
bnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgaW50IG4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCit7CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3Ig
PSBwcnBDdXJzb3I7CisKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBmb3VuZEtleXM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRQcmltYXJ5S2V5czsKKyAgICBWZWN0b3I8
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiBmb3VuZFZhbHVlczsKKworICAgIGlmIChj
dXJzb3ItPm1fY3Vyc29yKQorICAgICAgICBjdXJzb3ItPm1fY3Vyc29yLT5zYXZlUG9zaXRpb24o
KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGlmICghY3Vy
c29yLT5tX2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSkg
eworICAgICAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29yLT5tX2N1cnNvci0+
a2V5KCkpOworICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29y
LT5wcmltYXJ5S2V5KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpKSk7Cisg
ICAgfQorCisgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+
b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZl
bnRzKGZvdW5kS2V5cy5zaXplKCkgLSAxKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQ
cmVmZXRjaChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwor
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNo
ZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRp
bmdFdmVudHMoLXVudXNlZFByZWZldGNoZXMpOworICAgIG1fY3Vyc29yLT5yZXNldFRvU2F2ZWRQ
b3NpdGlvbih1c2VkUHJlZmV0Y2hlcyk7Cit9CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OmNsb3NlKCkKIHsKICAgICBpZiAobV9jdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggZWM1ODUyMDc4MjdhMmQyMmEzZGUyY2E3YTg2
ZTNkZWJiM2M3NjM2NC4uZWQxNTM1YzQ3ZGI0ODY5YjI0Njg4ZWVhMDZkNTViYjYxNmNkNDUzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAt
NjEsMTIgKzYxLDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50LCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVz
KTsKICAgICB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxl
ckNhbGxiYWNrKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcml2YXRlOgogICAgIElE
QkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+LCBJ
REJDdXJzb3I6OkRpcmVjdGlvbiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICBzdGF0aWMg
dm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBh
c3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51ZUlu
dGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tl
bmRJbXBsPiwgaW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgUmVmUHRyPElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBtX2N1cnNvcjsKICAgICBJREJDdXJzb3I6OkRpcmVjdGlv
biBtX2RpcmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggM2Y2ZDlmZDkwNmE2MjkzMjhlZWI3MjRkN2UyYWMxYTc1
NWI1Y2NjZC4uNjNjN2UwYWRjNTI3NTE2NWI4MmYxNWVjM2IwMmJmMGEyYzBmYjg5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgK
QEAgLTYxLDYgKzYxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1Jl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4
Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFz
c1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWZl
dGNoQ29udGludWUoaW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVz
LCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IDhjZmY5MWJhOWQxYWNlZDQ1OTIzM2Q5M2QwMzRlNjlhNWIyMTlhYjguLjc4NDVmNjMxYmQx
ODg5Mzc5NjkwNTNmZWMxMzliNDlhNjRkNWZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtOTA5LDYgKzkwOSwxNCBAQCBi
b29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luSW5kZXgoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgVmVj
dG9yPGNoYXI+IHNsaWNlVG9WZWN0b3IoY29uc3QgTGV2ZWxEQlNsaWNlJiBzbGljZSkKK3sKKyAg
ICBWZWN0b3I8Y2hhcj4gdjsKKyAgICBmb3IgKGNvbnN0IGNoYXIqIGNwID0gc2xpY2UuYmVnaW4o
KTsgY3AgIT0gc2xpY2UuZW5kKCk7ICsrY3ApCisgICAgICAgIHYuYXBwZW5kKCpjcCk7CisgICAg
cmV0dXJuIHY7Cit9CisKIG5hbWVzcGFjZSB7CiAKIHN0cnVjdCBDdXJzb3JPcHRpb25zIHsKQEAg
LTkyOSw2ICs5MzcsMjMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgPSAw
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVj
b3JkSWRlbnRpZmllcj4gb2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKCkgPSAwOyAvLyBGSVhN
RTogSSBkb24ndCB0aGluayB0aGlzIGlzIGFjdHVhbGx5IHVzZWQsIHNvIGRyb3AgaXQuCiAgICAg
dmlydHVhbCBpbnQ2NF90IGluZGV4RGF0YUlkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZl
UG9zaXRpb24oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1faXRlcmF0b3ItPmlzVmFsaWQoKSk7
CisgICAgICAgIG1fc2F2ZWRQb3NpdGlvbiA9IHNsaWNlVG9WZWN0b3IobV9pdGVyYXRvci0+a2V5
KCkpOworICAgIH07CisgICAgdmlydHVhbCB2b2lkIHJlc2V0VG9TYXZlZFBvc2l0aW9uKGludCBk
ZWx0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zYXZlZFBvc2l0aW9uLmlzRW1wdHkoKSk7
CisgICAgICAgIG1faXRlcmF0b3ItPnNlZWsobV9zYXZlZFBvc2l0aW9uKTsKKyAgICAgICAgQVNT
RVJUKG1faXRlcmF0b3ItPmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChkZWx0YSA+PSAwKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWx0YTsgKytpKSB7CisgICAgICAgICAgICBt
X2l0ZXJhdG9yLT5uZXh0KCk7CisgICAgICAgICAgICBBU1NFUlQobV9pdGVyYXRvci0+aXNWYWxp
ZCgpKTsKKyAgICAgICAgfQorICAgICAgICBtX3NhdmVkUG9zaXRpb24uY2xlYXIoKTsKKyAgICB9
CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbG9hZEN1
cnJlbnRSb3coKSA9IDA7CkBAIC05NDYsNiArOTcxLDcgQEAgcHJvdGVjdGVkOgogICAgIEN1cnNv
ck9wdGlvbnMgbV9jdXJzb3JPcHRpb25zOwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IG1f
aXRlcmF0b3I7CiAgICAgUmVmUHRyPElEQktleT4gbV9jdXJyZW50S2V5OworICAgIFZlY3Rvcjxj
aGFyPiBtX3NhdmVkUG9zaXRpb247CiB9OwogCiBib29sIEN1cnNvckltcGxDb21tb246OmZpcnN0
U2VlaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCAzMDk2ZDdmZjBk
MGQ5YWU0NWM0YTY3MzliNTVhZDVhNTg3YTlhOTUwLi4yNDRmZjA2MTVhODBjZmIwZTRhZTI5ZDA4
MTk3ZmMyYmEyMjVlMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAg
LTM0NSw2ICszNDUsMTQgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5i
bG9ja2VkRXZlbnQgJiYgbV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklE
QkN1cnNvclR5cGUgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhW
YWx1ZVR5cGUpCiAgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAorICAgIGlmICht
X3Jlc3VsdCkgeworICAgICAgICAvLyBOb3RpZnkgY3Vyc29yIHRoYXQgb25zdWNjZXNzIGV2ZW50
IGhhcyBiZWVuIGNvbXBsZXRlZC4KKyAgICAgICAgaWYgKG1fcmVzdWx0LT50eXBlKCkgPT0gSURC
QW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgbV9yZXN1bHQtPmlkYkN1cnNvcigpLT5w
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworICAgICAgICBpZiAobV9yZXN1bHQtPnR5cGUo
KSA9PSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCisgICAgICAgICAgICBtX3Jlc3Vs
dC0+aWRiQ3Vyc29yV2l0aFZhbHVlKCktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7Cisg
ICAgfQorCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAgLy8gSWYgYW4gZXJyb3Ig
ZXZlbnQgYW5kIHRoZSBkZWZhdWx0IHdhc24ndCBwcmV2ZW50ZWQuLi4KICAgICAgICAgaWYgKGRv
bnRQcmV2ZW50RGVmYXVsdCAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAppbmRleCAxNTM1NTNjMTZjYmM3ZmNk
NjQzM2FiNzFjM2MzNWZhNzg1MzBkNDlmLi5mN2FkMTY5ZjFiM2RhYmExZWZiOGY3YjQzNDM3NTk2
ZjZmYzVjNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtODQsNiArODQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxJREJL
ZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+
IHZhbHVlcykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENh
bGxiYWNrIHNob3VsZCBub3QgcmVhY2ggdGhlIHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBi
NDUyNjAwMzFkYzc0MmFmZTFmNzRiNmUwOTU4YzAxNzU2ZTA0OGE0Li5jNGQ2OTc2N2Y5YWY2YmQ3
YmMwNjUzYzJlOWU2NTE5NTJjMjA5OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTE0Nyw2ICsxNDcsMTEgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJD
dXJzb3JCYWNrZW5kSW1wbCogY3Vyc28KICAgICBtX29wZW5DdXJzb3JzLnJlbW92ZShjdXJzb3Ip
OwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFkZFBlbmRpbmdFdmVudHMo
aW50IG4pCit7CisgICAgbV9wZW5kaW5nRXZlbnRzICs9IG47Cit9CisKIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkKIHsKICAgICBpZiAobV9z
dGF0ZSA9PSBGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMzIwZDJiYzZiNDE1NjE0NWFiODVlOTZlYmJhYmM2
YzU5MjEzMzBkNy4uMmY5YzJiYTg0MTJhMjlkYjlmOTYzY2JlYmQxY2U1NmFlYTczYmQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFj
a3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNh
bGxiYWNrczsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29y
QmFja2VuZEltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURC
Q3Vyc29yQmFja2VuZEltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhp
bnQpOwogCiAgICAgdm9pZCBydW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRiNTU2M2JkYmJj
ZjQ3ZWE2MWQ5OGRmNjRkNDBjZjAxOGQ1NDYyMC4uMDAzZGJmZGNjZjU0MjkyYjgyYWFiMmMzNWYy
YWRiY2UwZjUxZDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2Vu
ZEltcGwqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1
cnNvckJhY2tlbmRJbXBsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRz
KGludCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCBlMWE4NTYyY2E2OWY2
OGU3MWRlNzBmMzMyNGY3M2Y0OTY3MjkwZGI5Li45YThhN2Q4ZTY5OTA2OTMyZjFiYjk0ZGMxMDFm
OGNlNjAxYjNjYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJDYWxsYmFja3MuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3Nf
aAogI2RlZmluZSBXZWJJREJDYWxsYmFja3NfaAogCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aFByZWZldGNoKFdlYlZlY3RvcjxXZWJJREJLZXk+IGtleXMsIFdlYlZlY3RvcjxXZWJJREJL
ZXk+IHByaW1hcnlLZXlzLCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgK
aW5kZXggOTJkYzE4YjlhNzEyMmVjOGZlNDk0MTNlOWZmYWZlNGIzZGViZmNiNy4uNmE1YmZiNmI5
MWQ2YzUxNDU5YjFkNzU0MzBkYTEyOThhMGU5MDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAgLTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwg
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2Vi
SURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24o
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG4sIFdl
YklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0
Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkgeyB9IC8v
IE9ubHkgdXNlZCBpbiBmcm9udGVuZC4KIAogcHJvdGVjdGVkOgogICAgIFdlYklEQkN1cnNvcigp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJh
bnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0
aW9uLmgKaW5kZXggMjg1YzFmYTczZjA1NDhkYmFiZGJmYzUwMjczNTcwZjk4ODNlMzdiMy4uNGQ0
ODAwMTEzMmVlYWEwZjMxYzA4MWZjNzBkZGNlZjhhNDIyZTliYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCkBAIC02MSw2ICs2MSw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lk
IGFkZFBlbmRpbmdFdmVudHMoaW50KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgV2ViSURCVHJhbnNhY3Rpb24oKSB7fQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAwZWVjMTVi
MGNiNWRiMWZiODFiMTAyNWU1YWM4MzBlZWJmYzg4MGJkLi4xOWMyMTUwZGQ0Y2ZiZGQ2NzVjNmRl
MjQ4NmRhYzlhNGYxMDIxMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDYWxsYmFja3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuY3BwCkBAIC05OSw2ICs5OSwyMyBAQCB2b2lkIElEQkNhbGxiYWNr
c1Byb3h5OjpvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkKICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
blN1Y2Nlc3NXaXRoUHJlZmV0Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywgVmVjdG9y
PFJlZlB0cjxJREJLZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiA+IHZhbHVlcykKK3sKKyAgICBjb25zdCBzaXplX3QgbiA9IGtleXMuc2l6ZSgp
OworCisgICAgV2ViVmVjdG9yPFdlYklEQktleT4gd2ViS2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8
V2ViSURCS2V5PiB3ZWJQcmltYXJ5S2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiB3ZWJWYWx1ZXMobik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG47ICsraSkgeworICAgICAgICB3ZWJLZXlzW2ldID0gV2ViSURCS2V5KGtleXNbaV0pOworICAg
ICAgICB3ZWJQcmltYXJ5S2V5c1tpXSA9IFdlYklEQktleShwcmltYXJ5S2V5c1tpXSk7CisgICAg
ICAgIHdlYlZhbHVlc1tpXSA9IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZXNbaV0pOwor
ICAgIH0KKworICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2god2ViS2V5cywg
d2ViUHJpbWFyeUtleXMsIHdlYlZhbHVlcyk7Cit9CisKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6
Om9uQmxvY2tlZCgpCiB7CiAgICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggMDM1Yzg4OGYy
NjhjOTFmNTBmZmZlZmE4MWRhZWEzMGRlNTQzMDFmMC4uYjg0MWMzNDNiZjJmYzY4ZmZlZDVkN2Fi
MmU3NDE2ZGRmODAxNDI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
Q29udGludWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OklEQktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
dXJzb3JCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vy
c29yQmFja2VuZFByb3h5LmNwcAppbmRleCA3ZGFiNmEyOGZhMjBmYThkYzUxYjZmNzdhZDI1MGZm
YjdjMDVmN2E0Li43ZDQ2ZTg0YWQwYzRkNDZiZjFmODkzZWE4MTMwMDRjMTNjNjBmMzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94
eS5jcHAKQEAgLTg5LDYgKzg5LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxl
dGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFCiAgICAgbV9p
ZGJDdXJzb3ItPmRlbGV0ZUZ1bmN0aW9uKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNr
cyksIGVjKTsKIH0KIAordm9pZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OnBvc3RTdWNjZXNzSGFu
ZGxlckNhbGxiYWNrKCkKK3sKKyAgICBtX2lkYkN1cnNvci0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2Fs
bGJhY2soKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q3Vyc29yQmFja2VuZFByb3h5LmgKaW5kZXggZDcyNTM2MDUwMjljYzkyYmY4YTBhODYwNWQwNDQz
ZTg1NTgxYmYwMi4uNzY5NmRhZmRkMTQ0NjM0OTE0NDNjNzlkNTFmYmYwMTU3NzE1MGY5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5
LmgKQEAgLTQ5LDYgKzQ5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFz
c1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNh
bGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJl
ZmV0Y2hDb250aW51ZShpbnQgbiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5
IHVzZWQgaW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50
IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2b2lkIHBv
c3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFj
a2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCQ3Vyc29yPik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRleCBl
YzJkZjlkMjVjYjI3ZWFlOTlhM2YzNjM3Y2Q3ZmM2NTZiZGI1NTBkLi5hZmVmMDA4MmNkZjE2NDVh
NzdjMzMxYjc4MDZlM2I0YWRlMWNmOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViQ29yZTo6SURCVHJh
bnNhY3Rpb25DYWxsYmFja3MqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29y
KFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CisgICAgdmly
dHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICBXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggNWQ2Nzc1N2Y5MzkzNzg4
ZTRlZTQ1YjhhYWE1YTk2NGNkZDI5MmY5ZS4uZWJjZTM5Y2MwZGQyNzA4ZmY3ODQ3NzU0ZjdhZjE1
NThjOTcyZDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURC
Q3Vyc29ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vy
c29ySW1wbC5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6ZGVs
ZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvCiAg
ICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5kZWxldGVGdW5jdGlvbihJREJDYWxsYmFja3NQcm94eTo6
Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURCQ3Vyc29y
SW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbiwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3Ms
IFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+cHJlZmV0
Y2hDb250aW51ZShuLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNr
cykpLCBlYyk7Cit9CisKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hSZXNldChpbnQg
dXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1faWRiQ3Vyc29y
QmFja2VuZC0+cHJlZmV0Y2hSZXNldCh1c2VkUHJlZmV0Y2hlcywgdW51c2VkUHJlZmV0Y2hlcyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJD
dXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmgKaW5kZXggYzIzNzkyMDczY2NkMjRhNGYzMDQ4NjNlZDUzMzkyNmFlMGRkZDZjMC4uYTIzNDg4
ZDU1OTRmMDc3MWQ4ZDUxMTg3YzQ0MmRkNmExZjNmODkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUm
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihXZWJJREJD
YWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNo
Q29udGludWUoaW50LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2Vk
UHJlZmV0Y2hlcyk7CiAKICBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1faWRiQ3Vyc29yQmFja2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116597</attachid>
            <date>2011-11-25 04:21:52 -0800</date>
            <delta_ts>2011-11-25 07:49:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111125122151.patch</filename>
            <type>text/plain</type>
            <size>28565</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZWIzNGMyZjJlNzRkMjA0NDZmN2U1Njk4NjhjNjMyZjkwOGJkMzk4Li45
ZDMxNjg4MDY1MTc4YzdiZjMwMDUwZWUxOTk1YTAyODRhYTgzN2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTEtMTEtMjUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6Cisg
ICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0Y2hp
bmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRoZSBj
dXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJhY2sg
dmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgICAg
VGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9yZSB0
aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9JREJD
dXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZElt
cGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpY2VUb1ZlY3Rvcik6CisgICAgICAg
ICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2Fs
bCB0aGUgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGlu
Z0V2ZW50cyk6CisgICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVy
IG9mIGV4dHJhIHBlbmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZl
dGNoZXMgbiBlbGVtZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVj
dCB0byBzZWUgbiBleHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMS0xMS0yNSAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0
b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgVXBzdHJlYW0gQmxhY2tCZXJyeSBwb3J0aW5n
IG9mIHBsYXRmb3JtL3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOThjYmU4ZTJj
ODU2OGEyOTQ5ZGRjODYxMDRkM2ZjY2Q2MGY3ODYwNi4uZGY1ZTlkZTQ2OTc0ZGQ2M2Y5Y2FlMjMx
YzFkOWRjOWEzY2MwZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxMS0xMS0yNSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogQ3Vyc29yIHByZS1mZXRjaGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcGx1bWJpbmcgZm9yIG5ldyBwcmUtZmV0
Y2hpbmcgcmVsYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJh
Y2tzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDdXJzb3I6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJz
b3I6OnByZWZldGNoUmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnBvc3RT
dWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OmFkZFBlbmRpbmdFdmVu
dHMpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAq
IHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OnBvc3RT
dWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cHJlZmV0Y2hD
b250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cHJlZmV0
Y2hSZXNldCk6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjphZGRQZW5kaW5nRXZl
bnRzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgICog
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnByZWZldGNoQ29udGlu
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBsOjpwcmVmZXRjaFJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5oOgorCiAyMDExLTExLTI0ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gV2Vi
IEluc3BlY3RvcjogcmVtb3ZlIGxlZ2FjeSBkZWJ1Z2dlciBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaAppbmRleCA2YjBhMDQwZjlmYzRkMmI4NzBkNGZhYzRh
ZjRjNDZhYTBmMDM0MDVjLi44MGM3M2Y2NjdiNDI2OWQ4Yjk5NzI4MjI3OTk1MzAwNGIxYmU2MTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKQEAgLTg4LDYgKzg4
LDcgQEAgcHVibGljOgogCiAgICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vy
c29yPiB7CiAgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBj
bG9uZSgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3Qg
SURCS2V5KiA9IDApID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4ga2V5
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggNjgxNTljNTFkYzEw
ZWMxMzBhNGU0ZjdhNmI5MWM2ZmM5YWU5YmIxMy4uMWU2NTJlNGQ2MTdiYjc3M2U0MWE2OTkwMzcz
OWE1NjdiMjUzMjlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxs
YmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCkBAIC01
Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlz
LCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAppbmRleCBl
ZGM2ZTgzZWJlOTk1ZTE5OTlkNmZiMDdjMmNhZTBkNWZmNDg5YmZkLi4xNjZjMmRkNmQzZDA5ZTY0
ZWEzMWQ3MGY2MDFhZTQ2MDU5OWRjMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
Y3BwCkBAIC0xMDYsOCArMTA2LDggQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gRklYTUU6
IFdlJ3JlIG5vdCB1c2luZyB0aGUgY29udGV4dCBmcm9tIHdoZW4gY29udGludWUgd2FzIGNhbGxl
ZCwgd2hpY2ggbWVhbnMgdGhlIGNhbGxiYWNrCiAgICAgLy8gICAgICAgIHdpbGwgYmUgb24gdGhl
IG9yaWdpbmFsIGNvbnRleHQgb3BlbkN1cnNvciB3YXMgY2FsbGVkIG9uLiBJcyB0aGlzIHJpZ2h0
PwogICAgIGlmIChtX3JlcXVlc3QtPnJlc2V0UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9uLmdldCgp
KSkgewotICAgICAgICBtX2JhY2tlbmQtPmNvbnRpbnVlRnVuY3Rpb24oa2V5LCBtX3JlcXVlc3Qs
IGVjKTsKICAgICAgICAgbV9yZXF1ZXN0LT5zZXRDdXJzb3IodGhpcyk7CisgICAgICAgIG1fYmFj
a2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMpOwogICAgIH0gZWxzZQog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CkBA
IC0xMjMsNiArMTIzLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgcmV0dXJuIHJl
cXVlc3QucmVsZWFzZSgpOwogfQogCit2b2lkIElEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVy
Q2FsbGJhY2soKQoreworICAgIG1fYmFja2VuZC0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2so
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAppbmRleCA3OTkwODQ0MTEz
MjBiZWRkZjQ5ZDBlYmFlYTJlMTE5OWExM2U2N2IxLi5iYTQ5ZDgyN2NkNDA1YjM5YzJiOWJjNWY2
Yjk3YzJkYTU1MmQzMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKQEAgLTcwLDYg
KzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CisKIHByb3RlY3RlZDoKICAgICBJ
REJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVz
dCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IGQxNjk4ZDBmZmEwODBl
MzMzNTdmMWY2NDVlZDQyZjI2MzQ1N2IzNjEuLjljNTk5YjU4MWY5M2QwNjkyNTNhNmNlZDYxZGNi
MjM1MjQwNDdhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCkBAIC0xMjMsNiArMTIzLDYwIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
CiAgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24obV9jdXJzb3ItPnByaW1hcnlLZXko
KSwgcHJwQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiB9CiAKK3ZvaWQgSURC
Q3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gdGhpczsKKyAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBs
OjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIGN1cnNvciwgbiwgY2FsbGJhY2tzKSkpCisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKK30KKwordm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJz
b3IsIGludCBuLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIFJl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gcHJwQ3Vyc29yOworCisgICAgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRLZXlzOworICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+IGZvdW5kUHJpbWFyeUtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4gZm91bmRWYWx1ZXM7CisKKyAgICBpZiAoY3Vyc29yLT5tX2N1cnNvcikKKyAgICAg
ICAgY3Vyc29yLT5tX3NhdmVkQ3Vyc29yID0gY3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUoKTsKKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGlmICghY3Vyc29yLT5t
X2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSkgeworICAg
ICAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29yLT5tX2N1cnNvci0+a2V5KCkp
OworICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29yLT5wcmlt
YXJ5S2V5KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpKSk7CisgICAgfQor
CisgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZv
dW5kS2V5cy5zaXplKCkgLSAxKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRj
aChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGlu
dCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVu
dHMoLXVudXNlZFByZWZldGNoZXMpOworICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKKyAg
ICBtX3NhdmVkQ3Vyc29yID0gMDsKKworICAgIGlmIChtX2N1cnNvcikgeworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2wg
b2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChvaywgb2spOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IGVjNTg1MjA3ODI3YTJkMjJhM2Rl
MmNhN2E4NmUzZGViYjNjNzYzNjQuLjJmYmU2NDY1MTg5NWRlMDk1NjQ3ZWU0ZDllMGYwNDA1OWM5
ZDU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmgKQEAgLTYxLDE0ICs2MSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVl
KGludCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJl
ZmV0Y2hlcyk7CiAgICAgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIEN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSopOwogCiAgICAg
c3RhdGljIHZvaWQgY29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyB2b2lkIHByZWZldGNoQ29u
dGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW1wbD4sIGludCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9jdXJzb3I7CisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yPiBtX3NhdmVkQ3Vyc29yOwogICAgIElEQkN1cnNvcjo6RGlyZWN0
aW9uIG1fZGlyZWN0aW9uOwogICAgIEN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4
IDNmNmQ5ZmQ5MDZhNjI5MzI4ZWViNzI0ZDdlMmFjMWE3NTViNWNjY2QuLjYzYzdlMGFkYzUyNzUx
NjViODJmMTVlYzNiMDJiZjBhMmMwZmI4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC02MSw2ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZj
NDU5ZGY3Y2E2MDlhYTY0MGM2ZDRjLi5kODRiYmU1ODQ5MTViNTVmMDcyYzNjMTAzMzcyOTllZGI5
ZjE3ZDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTkwOCw2ICs5MDgsMTQgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjprZXlFeGlzdHNJbkluZGV4KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIFZlY3RvcjxjaGFyPiBzbGljZVRvVmVjdG9y
KGNvbnN0IExldmVsREJTbGljZSYgc2xpY2UpCit7CisgICAgVmVjdG9yPGNoYXI+IHY7CisgICAg
Zm9yIChjb25zdCBjaGFyKiBjcCA9IHNsaWNlLmJlZ2luKCk7IGNwICE9IHNsaWNlLmVuZCgpOyAr
K2NwKQorICAgICAgICB2LmFwcGVuZCgqY3ApOworICAgIHJldHVybiB2OworfQorCiBuYW1lc3Bh
Y2UgewogCiBzdHJ1Y3QgQ3Vyc29yT3B0aW9ucyB7CkBAIC05MzksNiArOTQ3LDIzIEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9ucykKICAgICB7CiAg
ICAgfQorCisgICAgQ3Vyc29ySW1wbENvbW1vbihjb25zdCBDdXJzb3JJbXBsQ29tbW9uKiBvdGhl
cikKKyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKG90aGVyLT5tX3RyYW5zYWN0aW9uKQorICAgICAg
ICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+bV9jdXJzb3JPcHRpb25zKQorICAgICAgICAsIG1f
Y3VycmVudEtleShvdGhlci0+bV9jdXJyZW50S2V5KQorICAgIHsKKyAgICAgICAgbV9pdGVyYXRv
ciA9IG1fdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgICAgIGlmIChvdGhlci0+
bV9pdGVyYXRvcikgeworICAgICAgICAgICAgbV9pdGVyYXRvciA9IG1fdHJhbnNhY3Rpb24tPmNy
ZWF0ZUl0ZXJhdG9yKCk7CisKKyAgICAgICAgICAgIGlmIChvdGhlci0+bV9pdGVyYXRvci0+aXNW
YWxpZCgpKSB7CisgICAgICAgICAgICAgICAgbV9pdGVyYXRvci0+c2VlayhvdGhlci0+bV9pdGVy
YXRvci0+a2V5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChtX2l0ZXJhdG9yLT5pc1ZhbGlk
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgdmlydHVhbCB+Q3Vy
c29ySW1wbENvbW1vbigpIHt9CiAKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rp
b247CkBAIC0xMDUyLDYgKzEwNzcsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE9iamVjdFN0b3JlQ3Vyc29ySW1wbCh0cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucykp
OwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gY2xvbmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPYmplY3RTdG9y
ZUN1cnNvckltcGwodGhpcykpOworICAgIH0KKwogICAgIC8vIEN1cnNvckltcGxDb21tb24KICAg
ICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6T2JqZWN0U3RvcmVSZWNvcmRJZGVu
dGlmaWVyPiBvYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXIoKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyByZXR1cm4gMDsgfQpAQCAtMTA2NCw2ICsxMDk0LDEyIEBAIHByaXZhdGU6CiAgICAgewog
ICAgIH0KIAorICAgIE9iamVjdFN0b3JlQ3Vyc29ySW1wbChjb25zdCBPYmplY3RTdG9yZUN1cnNv
ckltcGwqIG90aGVyKQorICAgICAgICA6IEN1cnNvckltcGxDb21tb24ob3RoZXIpCisgICAgICAg
ICwgbV9jdXJyZW50VmFsdWUob3RoZXItPm1fY3VycmVudFZhbHVlKQorICAgIHsKKyAgICB9CisK
ICAgICBTdHJpbmcgbV9jdXJyZW50VmFsdWU7CiB9OwogCkBAIC0xMDk5LDYgKzExMzUsMTEgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4S2V5Q3Vyc29ySW1wbCh0
cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucykpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY2xvbmUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodGhpcykpOworICAgIH0KKwogICAg
IC8vIEN1cnNvckltcGxDb21tb24KICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KQEAgLTExMTIs
NiArMTE1MywxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICBJbmRleEtleUN1cnNv
ckltcGwoY29uc3QgSW5kZXhLZXlDdXJzb3JJbXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJ
bXBsQ29tbW9uKG90aGVyKQorICAgICAgICAsIG1fcHJpbWFyeUtleShvdGhlci0+bV9wcmltYXJ5
S2V5KQorICAgIHsKKyAgICB9CisKICAgICBSZWZQdHI8SURCS2V5PiBtX3ByaW1hcnlLZXk7CiB9
OwogCkBAIC0xMTYyLDYgKzEyMDksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluZGV4Q3Vyc29ySW1wbCh0cmFuc2FjdGlvbiwgY3Vyc29yT3B0aW9ucykpOwogICAg
IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gY2xv
bmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleEN1cnNvckltcGwo
dGhpcykpOworICAgIH0KKwogICAgIC8vIEN1cnNvckltcGxDb21tb24KICAgICB2aXJ0dWFsIFN0
cmluZyB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9CkBAIC0xMTc1LDYg
KzEyMjcsMTQgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCisgICAgSW5kZXhDdXJzb3JJbXBs
KGNvbnN0IEluZGV4Q3Vyc29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1wbENvbW1v
bihvdGhlcikKKyAgICAgICAgLCBtX3ByaW1hcnlLZXkob3RoZXItPm1fcHJpbWFyeUtleSkKKyAg
ICAgICAgLCBtX3ZhbHVlKG90aGVyLT5tX3ZhbHVlKQorICAgICAgICAsIG1fcHJpbWFyeUxldmVs
REJLZXkob3RoZXItPm1fcHJpbWFyeUxldmVsREJLZXkpCisgICAgeworICAgIH0KKwogICAgIFJl
ZlB0cjxJREJLZXk+IG1fcHJpbWFyeUtleTsKICAgICBTdHJpbmcgbV92YWx1ZTsKICAgICBWZWN0
b3I8Y2hhcj4gbV9wcmltYXJ5TGV2ZWxEQktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVl
c3QuY3BwCmluZGV4IDMwOTZkN2ZmMGQwZDlhZTQ1YzRhNjczOWI1NWFkNWE1ODdhOWE5NTAuLjI0
NGZmMDYxNWE4MGNmYjBlNGFlMjlkMDgxOTdmYzJiYTIyNWUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMzQ1LDYgKzM0NSwxNCBAQCBib29sIElEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCiAgICAgaWYgKGV2ZW50LT50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiBtX3Jlc3VsdCAmJiBtX3Jlc3Vs
dC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9
IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkKICAgICAgICAgbV9yZXF1ZXN0RmluaXNo
ZWQgPSB0cnVlOwogCisgICAgaWYgKG1fcmVzdWx0KSB7CisgICAgICAgIC8vIE5vdGlmeSBjdXJz
b3IgdGhhdCBvbnN1Y2Nlc3MgZXZlbnQgaGFzIGJlZW4gY29tcGxldGVkLgorICAgICAgICBpZiAo
bV9yZXN1bHQtPnR5cGUoKSA9PSBJREJBbnk6OklEQkN1cnNvclR5cGUpCisgICAgICAgICAgICBt
X3Jlc3VsdC0+aWRiQ3Vyc29yKCktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CisgICAg
ICAgIGlmIChtX3Jlc3VsdC0+dHlwZSgpID09IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlw
ZSkKKyAgICAgICAgICAgIG1fcmVzdWx0LT5pZGJDdXJzb3JXaXRoVmFsdWUoKS0+cG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKTsKKyAgICB9CisKICAgICBpZiAobV90cmFuc2FjdGlvbikgewog
ICAgICAgICAvLyBJZiBhbiBlcnJvciBldmVudCBhbmQgdGhlIGRlZmF1bHQgd2Fzbid0IHByZXZl
bnRlZC4uLgogICAgICAgICBpZiAoZG9udFByZXZlbnREZWZhdWx0ICYmIGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmVycm9yRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
CmluZGV4IDE1MzU1M2MxNmNiYzdmY2Q2NDMzYWI3MWMzYzM1ZmE3ODUzMGQ0OWYuLmY3YWQxNjlm
MWIzZGFiYTFlZmI4ZjdiNDM0Mzc1OTZmNmZjNWM0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5oCkBAIC04NCw2ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4p
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPElEQktleT4gPiBr
ZXlzLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVy
ZXIgc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKICAgICAvLyBBY3RpdmVE
T01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwCmluZGV4IGI0NTI2MDAzMWRjNzQyYWZlMWY3NGI2ZTA5NThjMDE3NTZl
MDQ4YTQuLmM0ZDY5NzY3ZjlhZjZiZDdiYzA2NTNjMmU5ZTY1MTk1MmMyMDk5ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cApAQCAtMTQ3LDYgKzE0NywxMSBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnVu
cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJzbwogICAgIG1fb3Bl
bkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6YWRkUGVuZGluZ0V2ZW50cyhpbnQgbikKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMgKz0g
bjsKK30KKwogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpkaWRDb21wbGV0ZVRhc2tF
dmVudHMoKQogewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAppbmRleCAzMjBkMmJj
NmI0MTU2MTQ1YWI4NWU5NmViYmFiYzZjNTkyMTMzMGQ3Li4yZjljMmJhODQxMmEyOWRiOWY5NjNj
YmViZDFjZTU2YWVhNzNiZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyogY2FsbGJh
Y2tzKSB7IG1fY2FsbGJhY2tzID0gY2FsbGJhY2tzOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lz
dGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopOworICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCk7CiAKICAgICB2b2lkIHJ1bigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UuaAppbmRleCA0NGI1NTYzYmRiYmNmNDdlYTYxZDk4ZGY2NGQ0MGNmMDE4ZDU0NjIwLi4wMDNk
YmZkY2NmNTQyOTJiODJhYWIyYzM1ZjJhZGJjZTBmNTFkNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKQEAg
LTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURC
VHJhbnNhY3Rpb25DYWxsYmFja3MqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3Bl
bkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJD
YWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNr
cy5oCmluZGV4IGUxYTg1NjJjYTY5ZjY4ZTcxZGU3MGYzMzI0ZjczZjQ5NjcyOTBkYjkuLjlhOGE3
ZDhlNjk5MDY5MzJmMWJiOTRkYzEwMWY4Y2U2MDFiM2NhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIFdlYklEQkNhbGxiYWNrc19oCiAjZGVmaW5lIFdlYklEQkNhbGxiYWNrc19oCiAKKyNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhD
b250aW51YXRpb24oKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBvbkJsb2NrZWQoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goV2ViVmVjdG9yPFdlYklEQktleT4g
a2V5cywgV2ViVmVjdG9yPFdlYklEQktleT4gcHJpbWFyeUtleXMsIFdlYlZlY3RvcjxXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlcykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJJREJDdXJzb3IuaAppbmRleCA5MmRjMThiOWE3MTIyZWM4ZmU0OTQxM2U5ZmZh
ZmU0YjNkZWJmY2I3Li42YTViZmI2YjkxZDZjNTE0NTliMWQ3NTQzMGRhMTI5OGEwZTkwOTAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaApAQCAtNjMs
NyArNjMsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2Rl
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29u
dGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNl
cHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2Vw
dGlvbkNvZGUmIGVjKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2Rl
JikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJl
ZmV0Y2hDb250aW51ZShpbnQgbiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByZWZl
dGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NI
YW5kbGVyQ2FsbGJhY2soKSB7IH0gLy8gT25seSB1c2VkIGluIGZyb250ZW5kLgogCiBwcm90ZWN0
ZWQ6CiAgICAgV2ViSURCQ3Vyc29yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAppbmRleCAyODVjMWZhNzNmMDU0OGRiYWJkYmZj
NTAyNzM1NzBmOTg4M2UzN2IzLi40ZDQ4MDAxMTMyZWVhYTBmMzFjMDgxZmM3MGRkY2VmOGE0MjJl
OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5z
YWN0aW9uLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJJREJUcmFuc2FjdGlv
bigpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCmluZGV4IDBlZWMxNWIwY2I1ZGIxZmI4MWIxMDI1ZTVhYzgzMGVlYmZjODgwYmQu
LjE5YzIxNTBkZDRjZmJkZDY3NWM2ZGUyNDg2ZGFjOWE0ZjEwMjEzOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTk5LDYgKzk5
LDIzIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24o
KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiB9CiAKK3Zv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRy
PElEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKQoreworICAgIGNvbnN0
IHNpemVfdCBuID0ga2V5cy5zaXplKCk7CisKKyAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJL
ZXlzKG4pOworICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYlByaW1hcnlLZXlzKG4pOworICAg
IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHdlYlZhbHVlcyhuKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHdlYktleXNbaV0gPSBX
ZWJJREJLZXkoa2V5c1tpXSk7CisgICAgICAgIHdlYlByaW1hcnlLZXlzW2ldID0gV2ViSURCS2V5
KHByaW1hcnlLZXlzW2ldKTsKKyAgICAgICAgd2ViVmFsdWVzW2ldID0gV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHZhbHVlc1tpXSk7CisgICAgfQorCisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
c1dpdGhQcmVmZXRjaCh3ZWJLZXlzLCB3ZWJQcmltYXJ5S2V5cywgd2ViVmFsdWVzKTsKK30KKwog
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25CbG9ja2VkKCkKIHsKICAgICBtX2NhbGxiYWNrcy0+
b25CbG9ja2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaAppbmRleCAwMzVjODg4ZjI2OGM5MWY1MGZmZmVmYTgxZGFlYTMwZGU1NDMwMWYwLi5i
ODQxYzM0M2JmMmZjNjhmZmVkNWQ3YWIyZTc0MTZkZGY4MDE0MjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IGtl
eXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IDdkYWI2YTI4
ZmEyMGZhOGRjNTFiNmY3N2FkMjUwZmZiN2MwNWY3YTQuLjdkNDZlODRhZDBjNGQ0NmJmMWY4OTNl
YTgxMzAwNGMxM2M2MGYzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtODksNiArODksMTEgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEUKICAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElEQkN1cnNvckJhY2tl
bmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQoreworICAgIG1faWRiQ3Vyc29y
LT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCBkNzI1MzYw
NTAyOWNjOTJiZjhhMGE4NjA1ZDA0NDNlODU1ODFiZjAyLi43Njk2ZGFmZGQxNDQ2MzQ5MTQ0M2M3
OWQ1MWZiZjAxNTc3MTUwZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBuLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9IC8vIE9ubHkgdXNlZCBpbiB0aGUgYmFja2VuZC4KKyAgICB2aXJ0dWFs
IHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRj
aGVzKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE9ubHkgdXNlZCBpbiB0aGUgYmFja2Vu
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKIAogcHJp
dmF0ZToKICAgICBJREJDdXJzb3JCYWNrZW5kUHJveHkoUGFzc093blB0cjxXZWJJREJDdXJzb3I+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9u
QmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eS5oCmluZGV4IGVjMmRmOWQyNWNiMjdlYWU5OWEzZjM2MzdjZDdmYzY1NmJk
YjU1MGQuLmFmZWYwMDgyY2RmMTY0NWE3N2MzMzFiNzgwNmUzYjRhZGUxY2Y5ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5k
UHJveHkuaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENh
bGxiYWNrcyhXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopOwogICAgIHZpcnR1YWwg
dm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGwqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoV2ViQ29yZTo6SURCQ3Vyc29y
QmFja2VuZEltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIFdlYklEQlRyYW5zYWN0aW9uKiBnZXRXZWJJ
REJUcmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fd2ViSURCVHJhbnNhY3Rpb24uZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29y
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNw
cAppbmRleCA1ZDY3NzU3ZjkzOTM3ODhlNGVlNDViOGFhYTVhOTY0Y2RkMjkyZjllLi5lYmNlMzlj
YzBkZDI3MDhmZjc4NDc3NTRmN2FmMTU1OGM5NzJkNjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcApAQCAtODIsNiArODIsMTYgQEAgdm9p
ZCBXZWJJREJDdXJzb3JJbXBsOjpkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgV2ViRXhjZXB0aW9uQ28KICAgICBtX2lkYkN1cnNvckJhY2tlbmQtPmRlbGV0ZUZ1bmN0
aW9uKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIGVjKTsK
IH0KIAordm9pZCBXZWJJREJDdXJzb3JJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBuLCBXZWJJ
REJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9p
ZGJDdXJzb3JCYWNrZW5kLT5wcmVmZXRjaENvbnRpbnVlKG4sIElEQkNhbGxiYWNrc1Byb3h5Ojpj
cmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIGVjKTsKK30KKwordm9pZCBXZWJJREJDdXJzb3JJ
bXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNo
ZXMpCit7CisgICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5wcmVmZXRjaFJlc2V0KHVzZWRQcmVmZXRj
aGVzLCB1bnVzZWRQcmVmZXRjaGVzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYklEQkN1cnNvckltcGwuaAppbmRleCBjMjM3OTIwNzNjY2QyNGE0ZjMwNDg2M2Vk
NTMzOTI2YWUwZGRkNmMwLi5hMjM0ODhkNTU5NGYwNzcxZDhkNTExODdjNDQyZGQ2YTFmM2Y4OTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCkBA
IC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihjb25zdCBXZWJJREJLZXkm
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQsIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNl
ZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKIAogIHByaXZhdGU6CiAgICAgV1RG
OjpSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3JC
YWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116618</attachid>
            <date>2011-11-25 07:49:35 -0800</date>
            <delta_ts>2011-11-28 03:15:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111125154933.patch</filename>
            <type>text/plain</type>
            <size>28204</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZWIzNGMyZjJlNzRkMjA0NDZmN2U1Njk4NjhjNjMyZjkwOGJkMzk4Li45
ZDMxNjg4MDY1MTc4YzdiZjMwMDUwZWUxOTk1YTAyODRhYTgzN2QwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTEtMTEtMjUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6Cisg
ICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0Y2hp
bmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRoZSBj
dXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJhY2sg
dmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgICAg
VGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9yZSB0
aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9JREJD
dXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZElt
cGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpY2VUb1ZlY3Rvcik6CisgICAgICAg
ICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2Fs
bCB0aGUgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGlu
Z0V2ZW50cyk6CisgICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVy
IG9mIGV4dHJhIHBlbmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZl
dGNoZXMgbiBlbGVtZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVj
dCB0byBzZWUgbiBleHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMS0xMS0yNSAgTGVvIFlhbmcgIDxsZW8ueWFuZ0B0
b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgVXBzdHJlYW0gQmxhY2tCZXJyeSBwb3J0aW5n
IG9mIHBsYXRmb3JtL3RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOThjYmU4ZTJj
ODU2OGEyOTQ5ZGRjODYxMDRkM2ZjY2Q2MGY3ODYwNi4uZGY1ZTlkZTQ2OTc0ZGQ2M2Y5Y2FlMjMx
YzFkOWRjOWEzY2MwZjdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
OCBAQAorMjAxMS0xMS0yNSAgSGFucyBXZW5uYm9yZyAgPGhhbnNAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIEluZGV4ZWREQjogQ3Vyc29yIHByZS1mZXRjaGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgcGx1bWJpbmcgZm9yIG5ldyBwcmUtZmV0
Y2hpbmcgcmVsYXRlZCBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ2FsbGJh
Y2tzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkNhbGxiYWNrczo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
REJDdXJzb3I6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJz
b3I6OnByZWZldGNoUmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3I6OnBvc3RT
dWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCVHJhbnNhY3Rpb246OmFkZFBlbmRpbmdFdmVu
dHMpOgorICAgICAgICAqIHNyYy9JREJDYWxsYmFja3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OklEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAq
IHNyYy9JREJDYWxsYmFja3NQcm94eS5oOgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDdXJzb3JCYWNrZW5kUHJveHk6OnBvc3RT
dWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cHJlZmV0Y2hD
b250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cHJlZmV0
Y2hSZXNldCk6CisgICAgICAgICogc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5OjphZGRQZW5kaW5nRXZl
bnRzKToKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAgICog
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnByZWZldGNoQ29udGlu
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDdXJzb3JJbXBsOjpwcmVmZXRjaFJlc2V0KToK
KyAgICAgICAgKiBzcmMvV2ViSURCQ3Vyc29ySW1wbC5oOgorCiAyMDExLTExLTI0ICBZdXJ5IFNl
bWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gV2Vi
IEluc3BlY3RvcjogcmVtb3ZlIGxlZ2FjeSBkZWJ1Z2dlciBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaAppbmRleCA2YjBhMDQwZjlmYzRkMmI4NzBkNGZhYzRh
ZjRjNDZhYTBmMDM0MDVjLi44MGM3M2Y2NjdiNDI2OWQ4Yjk5NzI4MjI3OTk1MzAwNGIxYmU2MTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKQEAgLTg4LDYgKzg4
LDcgQEAgcHVibGljOgogCiAgICAgY2xhc3MgQ3Vyc29yIDogcHVibGljIFJlZkNvdW50ZWQ8Q3Vy
c29yPiB7CiAgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q3Vyc29yPiBj
bG9uZSgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNvbnRpbnVlRnVuY3Rpb24oY29uc3Qg
SURCS2V5KiA9IDApID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4ga2V5
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggNjgxNTljNTFkYzEw
ZWMxMzBhNGU0ZjdhNmI5MWM2ZmM5YWU5YmIxMy4uMWU2NTJlNGQ2MTdiYjc3M2U0MWE2OTkwMzcz
OWE1NjdiMjUzMjlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxs
YmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCkBAIC01
Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlz
LCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAppbmRleCBl
ZGM2ZTgzZWJlOTk1ZTE5OTlkNmZiMDdjMmNhZTBkNWZmNDg5YmZkLi4xNjZjMmRkNmQzZDA5ZTY0
ZWEzMWQ3MGY2MDFhZTQ2MDU5OWRjMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
Y3BwCkBAIC0xMDYsOCArMTA2LDggQEAgdm9pZCBJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24o
UGFzc1JlZlB0cjxJREJLZXk+IGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gRklYTUU6
IFdlJ3JlIG5vdCB1c2luZyB0aGUgY29udGV4dCBmcm9tIHdoZW4gY29udGludWUgd2FzIGNhbGxl
ZCwgd2hpY2ggbWVhbnMgdGhlIGNhbGxiYWNrCiAgICAgLy8gICAgICAgIHdpbGwgYmUgb24gdGhl
IG9yaWdpbmFsIGNvbnRleHQgb3BlbkN1cnNvciB3YXMgY2FsbGVkIG9uLiBJcyB0aGlzIHJpZ2h0
PwogICAgIGlmIChtX3JlcXVlc3QtPnJlc2V0UmVhZHlTdGF0ZShtX3RyYW5zYWN0aW9uLmdldCgp
KSkgewotICAgICAgICBtX2JhY2tlbmQtPmNvbnRpbnVlRnVuY3Rpb24oa2V5LCBtX3JlcXVlc3Qs
IGVjKTsKICAgICAgICAgbV9yZXF1ZXN0LT5zZXRDdXJzb3IodGhpcyk7CisgICAgICAgIG1fYmFj
a2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMpOwogICAgIH0gZWxzZQog
ICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CkBA
IC0xMjMsNiArMTIzLDExIEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxl
dGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgcmV0dXJuIHJl
cXVlc3QucmVsZWFzZSgpOwogfQogCit2b2lkIElEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVy
Q2FsbGJhY2soKQoreworICAgIG1fYmFja2VuZC0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2so
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNv
ci5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaAppbmRleCA3OTkwODQ0MTEz
MjBiZWRkZjQ5ZDBlYmFlYTJlMTE5OWExM2U2N2IxLi5iYTQ5ZDgyN2NkNDA1YjM5YzJiOWJjNWY2
Yjk3YzJkYTU1MmQzMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKQEAgLTcwLDYg
KzcwLDggQEAgcHVibGljOgogICAgIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0
ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJik7CiAKKyAg
ICB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CisKIHByb3RlY3RlZDoKICAgICBJ
REJDdXJzb3IoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiwgSURCUmVxdWVz
dCosIElEQkFueSogc291cmNlLCBJREJUcmFuc2FjdGlvbiopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCmluZGV4IGQxNjk4ZDBmZmEwODBl
MzMzNTdmMWY2NDVlZDQyZjI2MzQ1N2IzNjEuLjljNTk5YjU4MWY5M2QwNjkyNTNhNmNlZDYxZGNi
MjM1MjQwNDdhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29y
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuY3BwCkBAIC0xMjMsNiArMTIzLDYwIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3Ms
CiAgICAgbV9vYmplY3RTdG9yZS0+ZGVsZXRlRnVuY3Rpb24obV9jdXJzb3ItPnByaW1hcnlLZXko
KSwgcHJwQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiB9CiAKK3ZvaWQgSURC
Q3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUoaW50IG4sIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBwcnBDYWxsYmFja3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0
cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gdGhpczsKKyAgICBSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBs
OjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwsIGN1cnNvciwgbiwgY2FsbGJhY2tzKSkpCisgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKK30KKwordm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBwcnBDdXJz
b3IsIGludCBuLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQoreworICAgIFJl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gY3Vyc29yID0gcHJwQ3Vyc29yOworCisgICAgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRLZXlzOworICAgIFZlY3RvcjxSZWZQdHI8SURCS2V5
PiA+IGZvdW5kUHJpbWFyeUtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+ID4gZm91bmRWYWx1ZXM7CisKKyAgICBpZiAoY3Vyc29yLT5tX2N1cnNvcikKKyAgICAg
ICAgY3Vyc29yLT5tX3NhdmVkQ3Vyc29yID0gY3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUoKTsKKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIGlmICghY3Vyc29yLT5t
X2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigwKSkgeworICAg
ICAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29yLT5tX2N1cnNvci0+a2V5KCkp
OworICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29yLT5wcmlt
YXJ5S2V5KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQoU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpKSk7CisgICAgfQor
CisgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZv
dW5kS2V5cy5zaXplKCkgLSAxKTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRj
aChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGlu
dCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVu
dHMoLXVudXNlZFByZWZldGNoZXMpOworICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKKyAg
ICBtX3NhdmVkQ3Vyc29yID0gMDsKKworICAgIGlmIChtX2N1cnNvcikgeworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2wg
b2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigpOworICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChvaywgb2spOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IGVjNTg1MjA3ODI3YTJkMjJhM2Rl
MmNhN2E4NmUzZGViYjNjNzYzNjQuLjJmYmU2NDY1MTg5NWRlMDk1NjQ3ZWU0ZDllMGYwNDA1OWM5
ZDU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBs
LmgKQEAgLTYxLDE0ICs2MSwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVl
KGludCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJl
ZmV0Y2hlcyk7CiAgICAgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJpdmF0ZToK
ICAgICBJREJDdXJzb3JCYWNrZW5kSW1wbChQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiwgSURCQ3Vyc29yOjpEaXJlY3Rpb24sIEN1cnNvclR5cGUsIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSosIElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZSopOwogCiAgICAg
c3RhdGljIHZvaWQgY29udGludWVGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOworICAgIHN0YXRpYyB2b2lkIHByZWZldGNoQ29u
dGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW1wbD4sIGludCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKIAogICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9jdXJzb3I7CisgICAgUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yPiBtX3NhdmVkQ3Vyc29yOwogICAgIElEQkN1cnNvcjo6RGlyZWN0
aW9uIG1fZGlyZWN0aW9uOwogICAgIEN1cnNvclR5cGUgbV9jdXJzb3JUeXBlOwogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fdHJhbnNhY3Rpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCmluZGV4
IDNmNmQ5ZmQ5MDZhNjI5MzI4ZWViNzI0ZDdlMmFjMWE3NTViNWNjY2QuLjYzYzdlMGFkYzUyNzUx
NjViODJmMTVlYzNiMDJiZjBhMmMwZmI4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oCkBAIC02MSw2ICs2MSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25D
b2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlYzc1ZDBmYzA2ZDk1ZGVjYWZj
NDU5ZGY3Y2E2MDlhYTY0MGM2ZDRjLi5mMzUwZjBhOWNmNTUwYzIwZjg5NzNlZTIyMDJhYzBiYjMz
MjgxODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tp
bmdTdG9yZS5jcHAKQEAgLTkzOSw2ICs5MzksMjMgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1f
Y3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQogICAgIHsKICAgICB9CisKKyAgICBDdXJzb3JJ
bXBsQ29tbW9uKGNvbnN0IEN1cnNvckltcGxDb21tb24qIG90aGVyKQorICAgICAgICA6IG1fdHJh
bnNhY3Rpb24ob3RoZXItPm1fdHJhbnNhY3Rpb24pCisgICAgICAgICwgbV9jdXJzb3JPcHRpb25z
KG90aGVyLT5tX2N1cnNvck9wdGlvbnMpCisgICAgICAgICwgbV9jdXJyZW50S2V5KG90aGVyLT5t
X2N1cnJlbnRLZXkpCisgICAgeworICAgICAgICBtX2l0ZXJhdG9yID0gbV90cmFuc2FjdGlvbi0+
Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJhdG9yKSB7CisgICAg
ICAgICAgICBtX2l0ZXJhdG9yID0gbV90cmFuc2FjdGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKKwor
ICAgICAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJhdG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
ICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKG90aGVyLT5tX2l0ZXJhdG9yLT5rZXkoKSk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKG1faXRlcmF0b3ItPmlzVmFsaWQoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKICAgICB2aXJ0dWFsIH5DdXJzb3JJbXBsQ29tbW9uKCkge30K
IAogICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90cmFuc2FjdGlvbjsKQEAgLTEwNTIsNiArMTA2
OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKSk7CiAgICAgfQogCisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9iamVjdFN0b3JlQ3Vyc29ySW1wbCh0aGlzKSk7
CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZh
bHVlKCkgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJlY29yZElkZW50aWZpZXI+IG9iamVjdFN0b3Jl
UmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CkBA
IC0xMDY0LDYgKzEwODYsMTIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCisgICAgT2JqZWN0
U3RvcmVDdXJzb3JJbXBsKGNvbnN0IE9iamVjdFN0b3JlQ3Vyc29ySW1wbCogb3RoZXIpCisgICAg
ICAgIDogQ3Vyc29ySW1wbENvbW1vbihvdGhlcikKKyAgICAgICAgLCBtX2N1cnJlbnRWYWx1ZShv
dGhlci0+bV9jdXJyZW50VmFsdWUpCisgICAgeworICAgIH0KKwogICAgIFN0cmluZyBtX2N1cnJl
bnRWYWx1ZTsKIH07CiAKQEAgLTEwOTksNiArMTEyNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JP
cHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElu
ZGV4S2V5Q3Vyc29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1v
bgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtl
eSgpIHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQpAQCAtMTExMiw2ICsxMTQ1LDEyIEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAorICAgIEluZGV4S2V5Q3Vyc29ySW1wbChjb25zdCBJbmRleEtl
eUN1cnNvckltcGwqIG90aGVyKQorICAgICAgICA6IEN1cnNvckltcGxDb21tb24ob3RoZXIpCisg
ICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5tX3ByaW1hcnlLZXkpCisgICAgeworICAgIH0K
KwogICAgIFJlZlB0cjxJREJLZXk+IG1fcHJpbWFyeUtleTsKIH07CiAKQEAgLTExNjIsNiArMTIw
MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJ
bXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4Q3Vyc29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAg
ICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXko
KSB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KQEAgLTExNzUsNiArMTIxOSwxNCBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKKyAgICBJbmRleEN1cnNvckltcGwoY29uc3QgSW5kZXhDdXJzb3JJ
bXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJbXBsQ29tbW9uKG90aGVyKQorICAgICAgICAs
IG1fcHJpbWFyeUtleShvdGhlci0+bV9wcmltYXJ5S2V5KQorICAgICAgICAsIG1fdmFsdWUob3Ro
ZXItPm1fdmFsdWUpCisgICAgICAgICwgbV9wcmltYXJ5TGV2ZWxEQktleShvdGhlci0+bV9wcmlt
YXJ5TGV2ZWxEQktleSkKKyAgICB7CisgICAgfQorCiAgICAgUmVmUHRyPElEQktleT4gbV9wcmlt
YXJ5S2V5OwogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIFZlY3RvcjxjaGFyPiBtX3ByaW1hcnlM
ZXZlbERCS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKaW5kZXggMzA5NmQ3
ZmYwZDBkOWFlNDVjNGE2NzM5YjU1YWQ1YTU4N2E5YTk1MC4uMjQ0ZmYwNjE1YTgwY2ZiMGU0YWUy
OWQwODE5N2ZjMmJhMjI1ZTAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
CkBAIC0zNDUsNiArMzQ1LDE0IEBAIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICBpZiAoZXZlbnQtPnR5cGUoKSAhPSBldmVudE5hbWVz
KCkuYmxvY2tlZEV2ZW50ICYmIG1fcmVzdWx0ICYmIG1fcmVzdWx0LT50eXBlKCkgIT0gSURCQW55
OjpJREJDdXJzb3JUeXBlICYmIG1fcmVzdWx0LT50eXBlKCkgIT0gSURCQW55OjpJREJDdXJzb3JX
aXRoVmFsdWVUeXBlKQogICAgICAgICBtX3JlcXVlc3RGaW5pc2hlZCA9IHRydWU7CiAKKyAgICBp
ZiAobV9yZXN1bHQpIHsKKyAgICAgICAgLy8gTm90aWZ5IGN1cnNvciB0aGF0IG9uc3VjY2VzcyBl
dmVudCBoYXMgYmVlbiBjb21wbGV0ZWQuCisgICAgICAgIGlmIChtX3Jlc3VsdC0+dHlwZSgpID09
IElEQkFueTo6SURCQ3Vyc29yVHlwZSkKKyAgICAgICAgICAgIG1fcmVzdWx0LT5pZGJDdXJzb3Io
KS0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKyAgICAgICAgaWYgKG1fcmVzdWx0LT50
eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQorICAgICAgICAgICAgbV9y
ZXN1bHQtPmlkYkN1cnNvcldpdGhWYWx1ZSgpLT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OworICAgIH0KKwogICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIC8vIElmIGFuIGVy
cm9yIGV2ZW50IGFuZCB0aGUgZGVmYXVsdCB3YXNuJ3QgcHJldmVudGVkLi4uCiAgICAgICAgIGlm
IChkb250UHJldmVudERlZmF1bHQgJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJy
b3JFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggMTUzNTUzYzE2Y2Jj
N2ZjZDY0MzNhYjcxYzNjMzVmYTc4NTMwZDQ5Zi4uZjdhZDE2OWYxYjNkYWJhMWVmYjhmN2I0MzQz
NzU5NmY2ZmM1YzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTg0LDYg
Kzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8
SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiB2YWx1ZXMpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVk
LiBDYWxsYmFjayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAgIHZpcnR1
YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5k
ZXggYjQ1MjYwMDMxZGM3NDJhZmUxZjc0YjZlMDk1OGMwMTc1NmUwNDhhNC4uYzRkNjk3NjdmOWFm
NmJkN2JjMDY1M2MyZTllNjUxOTUyYzIwOTk4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0xNDcsNiArMTQ3LDEx
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdpc3Rlck9wZW5DdXJzb3Io
SURCQ3Vyc29yQmFja2VuZEltcGwqIGN1cnNvCiAgICAgbV9vcGVuQ3Vyc29ycy5yZW1vdmUoY3Vy
c29yKTsKIH0KIAordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphZGRQZW5kaW5nRXZl
bnRzKGludCBuKQoreworICAgIG1fcGVuZGluZ0V2ZW50cyArPSBuOworfQorCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCiB7CiAgICAgaWYg
KG1fc3RhdGUgPT0gRmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDMyMGQyYmM2YjQxNTYxNDVhYjg1ZTk2ZWJi
YWJjNmM1OTIxMzMwZDcuLjJmOWMyYmE4NDEyYTI5ZGI5Zjk2M2NiZWJkMWNlNTZhZWE3M2JkMjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2Fs
bGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgbV9jYWxsYmFja3Mg
PSBjYWxsYmFja3M7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1
cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29y
KElEQkN1cnNvckJhY2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVu
dHMoaW50KTsKIAogICAgIHZvaWQgcnVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQ0YjU1NjNi
ZGJiY2Y0N2VhNjFkOThkZjY0ZDQwY2YwMThkNTQ2MjAuLjAwM2RiZmRjY2Y1NDI5MmI4MmFhYjJj
MzVmMmFkYmNlMGY1MWQ2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNr
cyopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJh
Y2tlbmRJbXBsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJ
REJDdXJzb3JCYWNrZW5kSW1wbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2
ZW50cyhpbnQpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKaW5kZXggZTFhODU2MmNh
NjlmNjhlNzFkZTcwZjMzMjRmNzNmNDk2NzI5MGRiOS4uOWE4YTdkOGU2OTkwNjkzMmYxYmI5NGRj
MTAxZjhjZTYwMWIzY2ExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViSURCQ2FsbGJh
Y2tzX2gKICNkZWZpbmUgV2ViSURCQ2FsbGJhY2tzX2gKIAorI2luY2x1ZGUgIldlYlZlY3Rvci5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29u
c3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2Vzc1dpdGhQcmVmZXRjaChXZWJWZWN0b3I8V2ViSURCS2V5PiBrZXlzLCBXZWJWZWN0b3I8V2Vi
SURCS2V5PiBwcmltYXJ5S2V5cywgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
dmFsdWVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNv
ci5oCmluZGV4IDkyZGMxOGI5YTcxMjJlYzhmZTQ5NDEzZTlmZmFmZTRiM2RlYmZjYjcuLjZhNWJm
YjZiOTFkNmM1MTQ1OWIxZDc1NDMwZGExMjk4YTBlOTA5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCkBAIC02Myw3ICs2MywxMCBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0
IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlv
bihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0
aW9uKFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBu
LCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFBy
ZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpIHsg
fSAvLyBPbmx5IHVzZWQgaW4gZnJvbnRlbmQuCiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJDdXJz
b3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbi5oCmluZGV4IDI4NWMxZmE3M2YwNTQ4ZGJhYmRiZmM1MDI3MzU3MGY5ODgzZTM3YjMu
LjRkNDgwMDExMzJlZWFhMGYzMWMwODFmYzcwZGRjZWY4YTQyMmU5YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaApAQCAtNjEsNiAr
NjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHZpcnR1YWwg
dm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKwogcHJvdGVjdGVkOgogICAgIFdlYklEQlRyYW5zYWN0aW9uKCkge30KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMGVl
YzE1YjBjYjVkYjFmYjgxYjEwMjVlNWFjODMwZWViZmM4ODBiZC4uMTljMjE1MGRkNGNmYmRkNjc1
YzZkZTI0ODZkYWM5YTRmMTAyMTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApAQCAtOTksNiArOTksMjMgQEAgdm9pZCBJREJDYWxs
YmFja3NQcm94eTo6b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCiAgICAgbV9jYWxsYmFja3Mt
Pm9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94
eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMpCit7CisgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNp
emUoKTsKKworICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CisgICAgV2ViVmVj
dG9yPFdlYklEQktleT4gd2ViUHJpbWFyeUtleXMobik7CisgICAgV2ViVmVjdG9yPFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gd2ViVmFsdWVzKG4pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuOyArK2kpIHsKKyAgICAgICAgd2ViS2V5c1tpXSA9IFdlYklEQktleShrZXlzW2ldKTsK
KyAgICAgICAgd2ViUHJpbWFyeUtleXNbaV0gPSBXZWJJREJLZXkocHJpbWFyeUtleXNbaV0pOwor
ICAgICAgICB3ZWJWYWx1ZXNbaV0gPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWVzW2ld
KTsKKyAgICB9CisKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aFByZWZldGNoKHdlYktl
eXMsIHdlYlByaW1hcnlLZXlzLCB3ZWJWYWx1ZXMpOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1By
b3h5OjpvbkJsb2NrZWQoKQogewogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDAzNWM4
ODhmMjY4YzkxZjUwZmZmZWZhODFkYWVhMzBkZTU0MzAxZjAuLmI4NDFjMzQzYmYyZmM2OGZmZWQ1
ZDdhYjJlNzQxNmRkZjgwMTQyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aENvbnRpbnVhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0
Y2goVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxX
ZWJDb3JlOjpJREJLZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkN1cnNvckJhY2tlbmRQcm94eS5jcHAKaW5kZXggN2RhYjZhMjhmYTIwZmE4ZGM1MWI2Zjc3YWQy
NTBmZmI3YzA1ZjdhNC4uN2Q0NmU4NGFkMGM0ZDQ2YmYxZjg5M2VhODEzMDA0YzEzYzYwZjM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5k
UHJveHkuY3BwCkBAIC04OSw2ICs4OSwxMSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6
ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRQogICAg
IG1faWRiQ3Vyc29yLT5kZWxldGVGdW5jdGlvbihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxs
YmFja3MpLCBlYyk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5Ojpwb3N0U3VjY2Vz
c0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9pZGJDdXJzb3ItPnBvc3RTdWNjZXNzSGFuZGxl
ckNhbGxiYWNrKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCmluZGV4IGQ3MjUzNjA1MDI5Y2M5MmJmOGEwYTg2MDVk
MDQ0M2U4NTU4MWJmMDIuLjc2OTZkYWZkZDE0NDYzNDkxNDQzYzc5ZDUxZmJmMDE1NzcxNTBmOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQ
cm94eS5oCkBAIC00OSw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lk
IHByZWZldGNoQ29udGludWUoaW50IG4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8g
T25seSB1c2VkIGluIHRoZSBiYWNrZW5kLgorICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0
KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0gLy8gT25seSB1c2VkIGluIHRoZSBiYWNrZW5kLgorICAgIHZpcnR1YWwgdm9p
ZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogCiBwcml2YXRlOgogICAgIElEQkN1cnNv
ckJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQkN1cnNvcj4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKaW5k
ZXggZWMyZGY5ZDI1Y2IyN2VhZTk5YTNmMzYzN2NkN2ZjNjU2YmRiNTUwZC4uYWZlZjAwODJjZGYx
NjQ1YTc3YzMzMWI3ODA2ZTNiNGFkZTFjZjlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCkBAIC00OSw2ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1
cnNvcihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyT3BlbkN1cnNvcihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbCopOworICAg
IHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgV2ViSURCVHJhbnNhY3Rpb24qIGdldFdlYklEQlRyYW5zYWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJJREJUcmFuc2FjdGlvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCmluZGV4IDVkNjc3NTdmOTM5
Mzc4OGU0ZWU0NWI4YWFhNWE5NjRjZGQyOTJmOWUuLmViY2UzOWNjMGRkMjcwOGZmNzg0Nzc1NGY3
YWYxNTU4Yzk3MmQ2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkN1cnNvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkN1cnNvckltcGwuY3BwCkBAIC04Miw2ICs4MiwxNiBAQCB2b2lkIFdlYklEQkN1cnNvckltcGw6
OmRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25D
bwogICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24oSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgZWMpOwogfQogCit2b2lkIFdlYklEQkN1
cnNvckltcGw6OnByZWZldGNoQ29udGludWUoaW50IG4sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPnBy
ZWZldGNoQ29udGludWUobiwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxs
YmFja3MpKSwgZWMpOworfQorCit2b2lkIFdlYklEQkN1cnNvckltcGw6OnByZWZldGNoUmVzZXQo
aW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykKK3sKKyAgICBtX2lkYkN1
cnNvckJhY2tlbmQtPnByZWZldGNoUmVzZXQodXNlZFByZWZldGNoZXMsIHVudXNlZFByZWZldGNo
ZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ3Vyc29ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29y
SW1wbC5oCmluZGV4IGMyMzc5MjA3M2NjZDI0YTRmMzA0ODYzZWQ1MzM5MjZhZTBkZGQ2YzAuLmEy
MzQ4OGQ1NTk0ZjA3NzFkOGQ1MTE4N2M0NDJkZDZhMWYzZjg5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwg
dm9pZCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyos
IFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2Vi
SURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVm
ZXRjaENvbnRpbnVlKGludCwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVu
dXNlZFByZWZldGNoZXMpOwogCiAgcHJpdmF0ZToKICAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBtX2lkYkN1cnNvckJhY2tlbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116722</attachid>
            <date>2011-11-28 03:15:53 -0800</date>
            <delta_ts>2011-11-29 06:52:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111128111551.patch</filename>
            <type>text/plain</type>
            <size>28791</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YzllNTIyOGM5NjNkMzgxNGU4NDI0OTcxZDU0MDM1MWEwNGU2OTU4Li5l
NjFjZGFiMWM5ZDlhYWIxZTVlMjMxODlkM2M5NmE3OWMwYmU5MjQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMTEtMTEtMjggIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6Cisg
ICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0Y2hp
bmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRoZSBj
dXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJhY2sg
dmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgICAg
VGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9yZSB0
aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9JREJD
dXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZElt
cGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2xpY2VUb1ZlY3Rvcik6CisgICAgICAg
ICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2Fs
bCB0aGUgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURC
UmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFBy
ZWZldGNoKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGlu
Z0V2ZW50cyk6CisgICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVy
IG9mIGV4dHJhIHBlbmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZl
dGNoZXMgbiBlbGVtZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVj
dCB0byBzZWUgbiBleHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UuaDoKKwogMjAxMS0xMS0yOCAgTHVrZSBNYWNwaGVyc29uICAgPG1h
Y3BoZXJzb25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBDU1MgYm9yZGVyIGlt
YWdlIHByb3BlcnRpZXMgaW4gQ1NTU3R5bGVBcHBseVByb3BlcnR5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCAwZGI3MmI0NGZlMjA4OTI1MzI1OWNmNmY2YjJmMWY2ZGMyZGJiYzYyLi40
NjFhZDM3NDBjNTkxMmU1MzlkYzY2ZDE3NjI3Y2JlNjlkZWQwYWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDExLTExLTI4ICBIYW5zIFdlbm5ib3JnICA8
aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJzb3IgcHJlLWZldGNo
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAy
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBw
bHVtYmluZyBmb3IgbmV3IHByZS1mZXRjaGluZyByZWxhdGVkIGZ1bmN0aW9ucy4KKworICAgICAg
ICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ2Fs
bGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHB1YmxpYy9XZWJJREJD
dXJzb3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAgICAq
IHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJUcmFu
c2FjdGlvbjo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dp
dGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAgICAg
ICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklEQkN1
cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAgICAq
IHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vyc29y
QmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vy
c29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKiBzcmMvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFj
a3NJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oOgorICAgICAg
ICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vy
c29ySW1wbDo6cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNv
ckltcGw6OnByZWZldGNoUmVzZXQpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6
CisKIDIwMTEtMTEtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBXZWIgSW5zcGVjdG9yOiBkZWxldGUgV2ViRGV2VG9vbHNBZ2Vu
dDo6ZnJvbnRlbmRMb2FkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjgwYzczZjY2
N2I0MjY5ZDhiOTk3MjgyMjc5OTUzMDA0YjFiZTYxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCYWNraW5nU3RvcmUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFz
cyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+IHsKICAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDYWxsYmFja3MuaAppbmRleCA2ODE1OWM1MWRjMTBlYzEzMGE0ZTRmN2E2YjkxYzZmYzlhZTli
YjEzLi4xZTY1MmU0ZDYxN2JiNzczZTQxYTY5OTAzNzM5YTU2N2IyNTMyOWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZl
dGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IGVkYzZlODNlYmU5OTVlMTk5OWQ2ZmIwN2My
Y2FlMGQ1ZmY0ODliZmQuLjE2NmMyZGQ2ZDNkMDllNjRlYTMxZDcwZjYwMWFlNDYwNTk5ZGMxYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCB2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBGSVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250
ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3YXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJh
Y2sKICAgICAvLyAgICAgICAgd2lsbCBiZSBvbiB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vy
c29yIHdhcyBjYWxsZWQgb24uIElzIHRoaXMgcmlnaHQ/CiAgICAgaWYgKG1fcmVxdWVzdC0+cmVz
ZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKSB7Ci0gICAgICAgIG1fYmFja2VuZC0+
Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMpOwogICAgICAgICBtX3JlcXVlc3Qt
PnNldEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtl
eSwgbV9yZXF1ZXN0LCBlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKIH0KQEAgLTEyMyw2ICsxMjMsMTEgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9iYWNr
ZW5kLT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5oCmluZGV4IDc5OTA4NDQxMTMyMGJlZGRmNDlkMGViYWVhMmUxMTk5YTEz
ZTY3YjEuLmJhNDlkODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVy
Q2FsbGJhY2soKTsKKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggZDE2OThkMGZmYTA4MGUzMzM1N2YxZjY0NWVkNDJmMjYzNDU3YjM2
MS4uNjEzZGRkZTRiMTYxNTE1OGY1OWEzMDRhMWQwODdmMmUxNzY3MDVkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTkwLDEwICs5
MCw4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSCiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSB0aGlzOwogICAgIFJlZlB0cjxJ
REJLZXk+IGtleSA9IHBycEtleTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbklu
dGVybmFsLCBjdXJzb3IsIGtleSwgY2FsbGJhY2tzKSkpCisgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6
Y29udGludWVGdW5jdGlvbkludGVybmFsLCB0aGlzLCBrZXksIHBycENhbGxiYWNrcykpKQogICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CiAKQEAg
LTEyMyw2ICsxMjEsNTcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywKICAgICBtX29iamVjdFN0
b3JlLT5kZWxldGVGdW5jdGlvbihtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBwcnBDYWxsYmFja3Ms
IG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENh
bGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5z
Y2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJl
ZmV0Y2hDb250aW51ZUludGVybmFsLCB0aGlzLCBuLCBwcnBDYWxsYmFja3MpKSkKKyAgICAgICAg
ZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOworfQorCit2b2lkIElE
QkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwg
aW50IG4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisKKyAgICBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiBmb3VuZEtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4g
Zm91bmRQcmltYXJ5S2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiBmb3VuZFZhbHVlczsKKworICAgIGlmIChjdXJzb3ItPm1fY3Vyc29yKQorICAgICAgICBj
dXJzb3ItPm1fc2F2ZWRDdXJzb3IgPSBjdXJzb3ItPm1fY3Vyc29yLT5jbG9uZSgpOworCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgaWYgKCFjdXJzb3ItPm1fY3Vy
c29yIHx8ICFjdXJzb3ItPm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKSB7CisgICAgICAg
ICAgICBjdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgZm91bmRLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29yLT5rZXkoKSk7Cisg
ICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKGN1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlL
ZXkoKSk7CisgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZUZyb21XaXJlKGN1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpKTsKKyAgICB9CisKKyAg
ICBpZiAoIWZvdW5kS2V5cy5zaXplKCkpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3Mo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjdXJzb3ItPm1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVudHMoZm91bmRL
ZXlzLnNpemUoKSAtIDEpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzV2l0aFByZWZldGNoKGZv
dW5kS2V5cywgZm91bmRQcmltYXJ5S2V5cywgZm91bmRWYWx1ZXMpOworfQorCit2b2lkIElEQkN1
cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVu
dXNlZFByZWZldGNoZXMpCit7CisgICAgbV90cmFuc2FjdGlvbi0+YWRkUGVuZGluZ0V2ZW50cygt
dW51c2VkUHJlZmV0Y2hlcyk7CisgICAgbV9jdXJzb3IgPSBtX3NhdmVkQ3Vyc29yOworICAgIG1f
c2F2ZWRDdXJzb3IgPSAwOworCisgICAgaWYgKG1fY3Vyc29yKSB7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgdXNlZFByZWZldGNoZXM7ICsraSkgeworICAgICAgICAgICAgYm9vbCBvayA9
IG1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KG9rLCBvayk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNsb3NlKCkKIHsKICAgICBpZiAobV9jdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggZWM1ODUyMDc4MjdhMmQyMmEzZGUyY2E3
YTg2ZTNkZWJiM2M3NjM2NC4uMmZiZTY0NjUxODk1ZGUwOTU2NDdlZTRkOWUwZjA0MDU5YzlkNTVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaApA
QCAtNjEsMTQgKzYxLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRj
aGVzKTsKICAgICB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFu
ZGxlckNhbGxiYWNrKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcml2YXRlOgogICAg
IElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICBzdGF0
aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51
ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbXBsPiwgaW50LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBtX2N1cnNvcjsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlOjpDdXJzb3I+IG1fc2F2ZWRDdXJzb3I7CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24g
bV9kaXJlY3Rpb247CiAgICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggM2Y2
ZDlmZDkwNmE2MjkzMjhlZWI3MjRkN2UyYWMxYTc1NWI1Y2NjZC4uNjNjN2UwYWRjNTI3NTE2NWI4
MmYxNWVjM2IwMmJmMGEyYzBmYjg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTYxLDYgKzYxLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50LCBQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBy
ZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGVjNzVkMGZjMDZkOTVkZWNhZmM0NTlk
ZjdjYTYwOWFhNjQwYzZkNGMuLmYzNTBmMGE5Y2Y1NTBjMjBmODk3M2VlMjIwMmFjMGJiMzMyODE4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcApAQCAtOTM5LDYgKzkzOSwyMyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9jdXJz
b3JPcHRpb25zKGN1cnNvck9wdGlvbnMpCiAgICAgewogICAgIH0KKworICAgIEN1cnNvckltcGxD
b21tb24oY29uc3QgQ3Vyc29ySW1wbENvbW1vbiogb3RoZXIpCisgICAgICAgIDogbV90cmFuc2Fj
dGlvbihvdGhlci0+bV90cmFuc2FjdGlvbikKKyAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMob3Ro
ZXItPm1fY3Vyc29yT3B0aW9ucykKKyAgICAgICAgLCBtX2N1cnJlbnRLZXkob3RoZXItPm1fY3Vy
cmVudEtleSkKKyAgICB7CisgICAgICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVh
dGVJdGVyYXRvcigpOworICAgICAgICBpZiAob3RoZXItPm1faXRlcmF0b3IpIHsKKyAgICAgICAg
ICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOworCisgICAg
ICAgICAgICBpZiAob3RoZXItPm1faXRlcmF0b3ItPmlzVmFsaWQoKSkgeworICAgICAgICAgICAg
ICAgIG1faXRlcmF0b3ItPnNlZWsob3RoZXItPm1faXRlcmF0b3ItPmtleSgpKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQobV9pdGVyYXRvci0+aXNWYWxpZCgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKwogICAgIHZpcnR1YWwgfkN1cnNvckltcGxDb21tb24oKSB7fQogCiAg
ICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9uOwpAQCAtMTA1Miw2ICsxMDY5LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPYmplY3RTdG9yZUN1cnNv
ckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25lKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKHRoaXMpKTsKKyAg
ICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUo
KSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJC
YWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gb2JqZWN0U3RvcmVSZWNv
cmRJZGVudGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KQEAgLTEw
NjQsNiArMTA4NiwxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICBPYmplY3RTdG9y
ZUN1cnNvckltcGwoY29uc3QgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKiBvdGhlcikKKyAgICAgICAg
OiBDdXJzb3JJbXBsQ29tbW9uKG90aGVyKQorICAgICAgICAsIG1fY3VycmVudFZhbHVlKG90aGVy
LT5tX2N1cnJlbnRWYWx1ZSkKKyAgICB7CisgICAgfQorCiAgICAgU3RyaW5nIG1fY3VycmVudFZh
bHVlOwogfTsKIApAQCAtMTA5OSw2ICsxMTI3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlv
bnMpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpD
dXJzb3I+IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhL
ZXlDdXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAg
ICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5KCkg
eyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9CkBAIC0xMTEyLDYgKzExNDUsMTIgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCisgICAgSW5kZXhLZXlDdXJzb3JJbXBsKGNvbnN0IEluZGV4S2V5Q3Vy
c29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1wbENvbW1vbihvdGhlcikKKyAgICAg
ICAgLCBtX3ByaW1hcnlLZXkob3RoZXItPm1fcHJpbWFyeUtleSkKKyAgICB7CisgICAgfQorCiAg
ICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwogfTsKIApAQCAtMTE2Miw2ICsxMjAxLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleEN1cnNvckltcGwo
dHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAv
LyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IHJldHVybiBt
X3ZhbHVlOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsg
cmV0dXJuIG1fcHJpbWFyeUtleTsgfQpAQCAtMTE3NSw2ICsxMjE5LDE0IEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAorICAgIEluZGV4Q3Vyc29ySW1wbChjb25zdCBJbmRleEN1cnNvckltcGwq
IG90aGVyKQorICAgICAgICA6IEN1cnNvckltcGxDb21tb24ob3RoZXIpCisgICAgICAgICwgbV9w
cmltYXJ5S2V5KG90aGVyLT5tX3ByaW1hcnlLZXkpCisgICAgICAgICwgbV92YWx1ZShvdGhlci0+
bV92YWx1ZSkKKyAgICAgICAgLCBtX3ByaW1hcnlMZXZlbERCS2V5KG90aGVyLT5tX3ByaW1hcnlM
ZXZlbERCS2V5KQorICAgIHsKKyAgICB9CisKICAgICBSZWZQdHI8SURCS2V5PiBtX3ByaW1hcnlL
ZXk7CiAgICAgU3RyaW5nIG1fdmFsdWU7CiAgICAgVmVjdG9yPGNoYXI+IG1fcHJpbWFyeUxldmVs
REJLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCAzMDk2ZDdmZjBk
MGQ5YWU0NWM0YTY3MzliNTVhZDVhNTg3YTlhOTUwLi4yNDRmZjA2MTVhODBjZmIwZTRhZTI5ZDA4
MTk3ZmMyYmEyMjVlMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAg
LTM0NSw2ICszNDUsMTQgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5i
bG9ja2VkRXZlbnQgJiYgbV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklE
QkN1cnNvclR5cGUgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhW
YWx1ZVR5cGUpCiAgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAorICAgIGlmICht
X3Jlc3VsdCkgeworICAgICAgICAvLyBOb3RpZnkgY3Vyc29yIHRoYXQgb25zdWNjZXNzIGV2ZW50
IGhhcyBiZWVuIGNvbXBsZXRlZC4KKyAgICAgICAgaWYgKG1fcmVzdWx0LT50eXBlKCkgPT0gSURC
QW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgbV9yZXN1bHQtPmlkYkN1cnNvcigpLT5w
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworICAgICAgICBpZiAobV9yZXN1bHQtPnR5cGUo
KSA9PSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCisgICAgICAgICAgICBtX3Jlc3Vs
dC0+aWRiQ3Vyc29yV2l0aFZhbHVlKCktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7Cisg
ICAgfQorCiAgICAgaWYgKG1fdHJhbnNhY3Rpb24pIHsKICAgICAgICAgLy8gSWYgYW4gZXJyb3Ig
ZXZlbnQgYW5kIHRoZSBkZWZhdWx0IHdhc24ndCBwcmV2ZW50ZWQuLi4KICAgICAgICAgaWYgKGRv
bnRQcmV2ZW50RGVmYXVsdCAmJiBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaAppbmRleCAxNTM1NTNjMTZjYmM3ZmNk
NjQzM2FiNzFjM2MzNWZhNzg1MzBkNDlmLi5mN2FkMTY5ZjFiM2RhYmExZWZiOGY3YjQzNDM3NTk2
ZjZmYzVjNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaApAQCAtODQsNiArODQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aENvbnRpbnVhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRo
UHJlZmV0Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxJREJL
ZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+
IHZhbHVlcykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBOb3QgaW1wbGVtZW50ZWQuIENh
bGxiYWNrIHNob3VsZCBub3QgcmVhY2ggdGhlIHJlbmRlcmVyIHNpZGUuCiAgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZCgpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCBi
NDUyNjAwMzFkYzc0MmFmZTFmNzRiNmUwOTU4YzAxNzU2ZTA0OGE0Li5jNGQ2OTc2N2Y5YWY2YmQ3
YmMwNjUzYzJlOWU2NTE5NTJjMjA5OTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKQEAgLTE0Nyw2ICsxNDcsMTEgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjp1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJD
dXJzb3JCYWNrZW5kSW1wbCogY3Vyc28KICAgICBtX29wZW5DdXJzb3JzLnJlbW92ZShjdXJzb3Ip
OwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmFkZFBlbmRpbmdFdmVudHMo
aW50IG4pCit7CisgICAgbV9wZW5kaW5nRXZlbnRzICs9IG47Cit9CisKIHZvaWQgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVUYXNrRXZlbnRzKCkKIHsKICAgICBpZiAobV9z
dGF0ZSA9PSBGaW5pc2hlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMzIwZDJiYzZiNDE1NjE0NWFiODVlOTZlYmJhYmM2
YzU5MjEzMzBkNy4uMmY5YzJiYTg0MTJhMjlkYjlmOTYzY2JlYmQxY2U1NmFlYTczYmQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFj
a3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNhbGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNh
bGxiYWNrczsgfQogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29y
QmFja2VuZEltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURC
Q3Vyc29yQmFja2VuZEltcGwqKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhp
bnQpOwogCiAgICAgdm9pZCBydW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggNDRiNTU2M2JkYmJj
ZjQ3ZWE2MWQ5OGRmNjRkNDBjZjAxOGQ1NDYyMC4uMDAzZGJmZGNjZjU0MjkyYjgyYWFiMmMzNWYy
YWRiY2UwZjUxZDY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2Vu
ZEltcGwqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1
cnNvckJhY2tlbmRJbXBsKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRz
KGludCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAppbmRleCBlMWE4NTYyY2E2OWY2
OGU3MWRlNzBmMzMyNGY3M2Y0OTY3MjkwZGI5Li45YThhN2Q4ZTY5OTA2OTMyZjFiYjk0ZGMxMDFm
OGNlNjAxYjNjYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJDYWxsYmFja3MuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3Nf
aAogI2RlZmluZSBXZWJJREJDYWxsYmFja3NfaAogCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aFByZWZldGNoKFdlYlZlY3RvcjxXZWJJREJLZXk+IGtleXMsIFdlYlZlY3RvcjxXZWJJREJL
ZXk+IHByaW1hcnlLZXlzLCBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1
ZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklE
QkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgK
aW5kZXggOTJkYzE4YjlhNzEyMmVjOGZlNDk0MTNlOWZmYWZlNGIzZGViZmNiNy4uZjgyMmU3NGI0
M2I3MDVmN2M2ZDliZWNlNTNlMDc0OTFiMzg0ZmIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAgLTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwg
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2Vi
SURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdl
YklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24o
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50LCBXZWJJ
REJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQsIGludCkgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NI
YW5kbGVyQ2FsbGJhY2soKSB7IH0gLy8gT25seSB1c2VkIGluIGZyb250ZW5kLgogCiBwcm90ZWN0
ZWQ6CiAgICAgV2ViSURCQ3Vyc29yKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAppbmRleCAyODVjMWZhNzNmMDU0OGRiYWJkYmZj
NTAyNzM1NzBmOTg4M2UzN2IzLi40ZDQ4MDAxMTMyZWVhYTBmMzFjMDgxZmM3MGRkY2VmOGE0MjJl
OWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5z
YWN0aW9uLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKIHByb3RlY3RlZDoKICAgICBXZWJJREJUcmFuc2FjdGlv
bigpIHt9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCmluZGV4IDBlZWMxNWIwY2I1ZGIxZmI4MWIxMDI1ZTVhYzgzMGVlYmZjODgwYmQu
LjE5YzIxNTBkZDRjZmJkZDY3NWM2ZGUyNDg2ZGFjOWE0ZjEwMjEzOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTk5LDYgKzk5
LDIzIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24o
KQogICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CiB9CiAKK3Zv
aWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRy
PElEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBwcmltYXJ5S2V5cywgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4gdmFsdWVzKQoreworICAgIGNvbnN0
IHNpemVfdCBuID0ga2V5cy5zaXplKCk7CisKKyAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJL
ZXlzKG4pOworICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYlByaW1hcnlLZXlzKG4pOworICAg
IFdlYlZlY3RvcjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHdlYlZhbHVlcyhuKTsKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHdlYktleXNbaV0gPSBX
ZWJJREJLZXkoa2V5c1tpXSk7CisgICAgICAgIHdlYlByaW1hcnlLZXlzW2ldID0gV2ViSURCS2V5
KHByaW1hcnlLZXlzW2ldKTsKKyAgICAgICAgd2ViVmFsdWVzW2ldID0gV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHZhbHVlc1tpXSk7CisgICAgfQorCisgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
c1dpdGhQcmVmZXRjaCh3ZWJLZXlzLCB3ZWJQcmltYXJ5S2V5cywgd2ViVmFsdWVzKTsKK30KKwog
dm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25CbG9ja2VkKCkKIHsKICAgICBtX2NhbGxiYWNrcy0+
b25CbG9ja2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaAppbmRleCAwMzVjODg4ZjI2OGM5MWY1MGZmZmVmYTgxZGFlYTMwZGU1NDMwMWYwLi5i
ODQxYzM0M2JmMmZjNjhmZmVkNWQ3YWIyZTc0MTZkZGY4MDE0MjVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKQEAgLTUzLDYgKzUzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IGtl
eXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCmluZGV4IDdkYWI2YTI4
ZmEyMGZhOGRjNTFiNmY3N2FkMjUwZmZiN2MwNWY3YTQuLjdkNDZlODRhZDBjNGQ0NmJmMWY4OTNl
YTgxMzAwNGMxM2M2MGYzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcApAQCAtODksNiArODksMTEgQEAgdm9pZCBJREJD
dXJzb3JCYWNrZW5kUHJveHk6OmRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIEUKICAgICBtX2lkYkN1cnNvci0+ZGVsZXRlRnVuY3Rpb24obmV3IFdlYklE
QkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgZWMpOwogfQogCit2b2lkIElEQkN1cnNvckJhY2tl
bmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQoreworICAgIG1faWRiQ3Vyc29y
LT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAppbmRleCBkNzI1MzYw
NTAyOWNjOTJiZjhhMGE4NjA1ZDA0NDNlODU1ODFiZjAyLi4wZjU4MDM2OTNiYzc4M2ZiMDA5YzNl
YjczZWYzMzdjM2NmM2Q3YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaApAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJikgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2
b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hl
cykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQu
CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAKIHByaXZh
dGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZFByb3h5KFBhc3NPd25QdHI8V2ViSURCQ3Vyc29yPik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHkuaAppbmRleCBlYzJkZjlkMjVjYjI3ZWFlOTlhM2YzNjM3Y2Q3ZmM2NTZiZGI1
NTBkLi5hZmVmMDA4MmNkZjE2NDVhNzdjMzMxYjc4MDZlM2I0YWRlMWNmOWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFBy
b3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxs
YmFja3MoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3MqKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQkN1cnNvckJh
Y2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURC
VHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAK
aW5kZXggNWQ2Nzc1N2Y5MzkzNzg4ZTRlZTQ1YjhhYWE1YTk2NGNkZDI5MmY5ZS4uZWJjZTM5Y2Mw
ZGQyNzA4ZmY3ODQ3NzU0ZjdhZjE1NThjOTcyZDYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIHZvaWQg
V2ViSURCQ3Vyc29ySW1wbDo6ZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFj
a3MsIFdlYkV4Y2VwdGlvbkNvCiAgICAgbV9pZGJDdXJzb3JCYWNrZW5kLT5kZWxldGVGdW5jdGlv
bihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9
CiAKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbiwgV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRi
Q3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hDb250aW51ZShuLCBJREJDYWxsYmFja3NQcm94eTo6Y3Jl
YXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7Cit9CisKK3ZvaWQgV2ViSURCQ3Vyc29ySW1w
bDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVz
KQoreworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hSZXNldCh1c2VkUHJlZmV0Y2hl
cywgdW51c2VkUHJlZmV0Y2hlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKaW5kZXggYzIzNzkyMDczY2NkMjRhNGYzMDQ4NjNlZDUz
MzkyNmFlMGRkZDZjMC4uYTIzNDg4ZDU1OTRmMDc3MWQ4ZDUxMTg3YzQ0MmRkNmExZjNmODkzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaApAQCAt
NTEsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5Jiwg
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAg
dmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50LCBXZWJJREJDYWxsYmFja3MqLCBXZWJF
eGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQ
cmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcyk7CiAKICBwcml2YXRlOgogICAgIFdURjo6
UmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1faWRiQ3Vyc29yQmFj
a2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116961</attachid>
            <date>2011-11-29 06:52:35 -0800</date>
            <delta_ts>2011-11-29 08:29:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111129145233.patch</filename>
            <type>text/plain</type>
            <size>32324</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmY2Y4M2ZmYmJjMTc3MGIxZDIyN2JlOTc2OTZmNmRkN2RiOWM2NmM4Li43
OTIyYTg0NDY1NDU1OTQ0YTY2NjUxZDZkZDI5MmE4NWI3NTY5NmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjQgQEAKKzIwMTEtMTEtMjkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6
CisgICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0
Y2hpbmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRo
ZSBjdXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJh
Y2sgdmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAg
ICAgVGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9y
ZSB0aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3Jl
YXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6c2l6ZUVzdGltYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vyc29ySW1wbENv
bW1vbjo6Q3Vyc29ySW1wbENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpPYmplY3RTdG9yZUN1cnNvckltcGw6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
ck9wdGlvbnM6Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6T2JqZWN0U3RvcmVDdXJzb3JJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9wdGlvbnM6OkluZGV4S2V5Q3Vyc29ySW1wbDo6Y2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6SW5kZXhLZXlDdXJzb3JJbXBs
OjpJbmRleEtleUN1cnNvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6
SW5kZXhDdXJzb3JJbXBsOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpJbmRleEN1cnNvckltcGw6OkluZGV4Q3Vyc29ySW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2FsbCB0aGUgcG9zdFN1
Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyk6Cisg
ICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGV4dHJhIHBl
bmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZldGNoZXMgbiBlbGVt
ZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVjdCB0byBzZWUgbiBl
eHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaDoKKwogMjAxMS0xMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSW1wcm92ZSBGb250TWV0cmljcyBhY2N1cmFjeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkN2QyZGYzYjgxZGQ1MTc3NjAwZTI3MTU2YjY1NzE0
MmE4ZjVlNjUxLi4wMjg0Nzg2ZGRlOGU1NDk2YzI0ODlkOTUyZmZiMzhjOTQzMTEwMjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTExLTI5ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJz
b3IgcHJlLWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgbmV3IHByZS1mZXRjaGluZyByZWxhdGVkIGZ1bmN0aW9u
cy4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxl
dGVGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250
aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2sp
OgorICAgICAgICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJUcmFuc2FjdGlvbjo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6
Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5
Lmg6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2sp
OgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdl
YktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKiBz
cmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9X
ZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6
cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnBy
ZWZldGNoUmVzZXQpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6CisKIDIwMTEt
MTEtMjkgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3Nl
cnRpb24gZmFpbHMgd2hlbiBvcGVuaW5nIHR3byBwb3B1cCBtZW51cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNmIwYTA0MGY5ZmM0ZDJiODcwZDRmYWM0YWY0
YzQ2YWEwZjAzNDA1Yy4uODBjNzNmNjY3YjQyNjlkOGI5OTcyODIyNzk5NTMwMDRiMWJlNjE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04OCw2ICs4OCw3
IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIEN1cnNvciA6IHB1YmxpYyBSZWZDb3VudGVkPEN1cnNv
cj4gewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xv
bmUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElE
QktleSogPSAwKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgp
ID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCmluZGV4IDY4MTU5YzUxZGMxMGVj
MTMwYTRlNGY3YTZiOTFjNmZjOWFlOWJiMTMuLjFlNjUyZTRkNjE3YmI3NzNlNDFhNjk5MDM3Mzlh
NTY3YjI1MzI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJh
Y2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaApAQCAtNTYs
NiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKaW5kZXggZWRj
NmU4M2ViZTk5NWUxOTk5ZDZmYjA3YzJjYWUwZDVmZjQ4OWJmZC4uMTY2YzJkZDZkM2QwOWU2NGVh
MzFkNzBmNjAxYWU0NjA1OTlkYzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNw
cApAQCAtMTA2LDggKzEwNiw4IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEZJWE1FOiBX
ZSdyZSBub3QgdXNpbmcgdGhlIGNvbnRleHQgZnJvbSB3aGVuIGNvbnRpbnVlIHdhcyBjYWxsZWQs
IHdoaWNoIG1lYW5zIHRoZSBjYWxsYmFjawogICAgIC8vICAgICAgICB3aWxsIGJlIG9uIHRoZSBv
cmlnaW5hbCBjb250ZXh0IG9wZW5DdXJzb3Igd2FzIGNhbGxlZCBvbi4gSXMgdGhpcyByaWdodD8K
ICAgICBpZiAobV9yZXF1ZXN0LT5yZXNldFJlYWR5U3RhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkp
IHsKLSAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1ZXN0LCBl
Yyk7CiAgICAgICAgIG1fcmVxdWVzdC0+c2V0Q3Vyc29yKHRoaXMpOworICAgICAgICBtX2JhY2tl
bmQtPmNvbnRpbnVlRnVuY3Rpb24oa2V5LCBtX3JlcXVlc3QsIGVjKTsKICAgICB9IGVsc2UKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogfQpAQCAt
MTIzLDYgKzEyMywxMSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgIHJldHVybiByZXF1
ZXN0LnJlbGVhc2UoKTsKIH0KIAordm9pZCBJREJDdXJzb3I6OnBvc3RTdWNjZXNzSGFuZGxlckNh
bGxiYWNrKCkKK3sKKyAgICBtX2JhY2tlbmQtPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggNzk5MDg0NDExMzIw
YmVkZGY0OWQwZWJhZWEyZTExOTlhMTNlNjdiMS4uYmE0OWQ4MjdjZDQwNWIzOWMyYjliYzVmNmI5
N2MyZGE1NTJkMzA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBAIC03MCw2ICs3
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
dm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURC
Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQlJlcXVlc3Qq
LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBkMTY5OGQwZmZhMDgwZTMz
MzU3ZjFmNjQ1ZWQ0MmYyNjM0NTdiMzYxLi41MWI0M2E2M2E2OTUwNjc5YzJhYTdjMGYyM2VlNWVk
OTI4NTMzMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcApAQCAtOTAsMTAgKzkwLDggQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6
dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1IKIAog
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNv
ciA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwotICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJ
bXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIGN1cnNvciwga2V5LCBjYWxsYmFja3MpKSkK
KyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIGtl
eSwgcHJwQ2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9BTExPV0VEX0VSUjsKIH0KIApAQCAtMTIzLDYgKzEyMSw2NCBAQCB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLAogICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0aW9uKG1fY3Vyc29yLT5wcmlt
YXJ5S2V5KCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOwogfQogCit2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0Zl
dGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWws
IHRoaXMsIG51bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQorICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVy
VG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKKworICAgIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiBmb3VuZFByaW1hcnlLZXlzOworICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiA+IGZvdW5kVmFsdWVzOworCisgICAgaWYgKGN1cnNvci0+bV9jdXJzb3IpCisgICAgICAg
IGN1cnNvci0+bV9zYXZlZEN1cnNvciA9IGN1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CisKKyAg
ICBjb25zdCBzaXplX3Qga01heFNpemVFc3RpbWF0ZSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAg
c2l6ZV90IHNpemVFc3RpbWF0ZSA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJl
clRvRmV0Y2g7ICsraSkgeworICAgICAgICBpZiAoc2l6ZUVzdGltYXRlID4ga01heFNpemVFc3Rp
bWF0ZSB8fCAhY3Vyc29yLT5tX2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVG
dW5jdGlvbigwKSkgeworICAgICAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29y
LT5tX2N1cnNvci0+a2V5KCkpOworICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJz
b3ItPm1fY3Vyc29yLT5wcmltYXJ5S2V5KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52
YWx1ZSgpKSk7CisKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IGN1cnNvci0+bV9jdXJzb3ItPmtl
eSgpLT5zaXplRXN0aW1hdGUoKTsKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IGN1cnNvci0+bV9j
dXJzb3ItPnByaW1hcnlLZXkoKS0+c2l6ZUVzdGltYXRlKCk7CisgICAgICAgIHNpemVFc3RpbWF0
ZSArPSBjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsK
KyAgICB9CisKKyAgICBpZiAoIWZvdW5kS2V5cy5zaXplKCkpIHsKKyAgICAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjdXJzb3ItPm1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdF
dmVudHMoZm91bmRLZXlzLnNpemUoKSAtIDEpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzV2l0
aFByZWZldGNoKGZvdW5kS2V5cywgZm91bmRQcmltYXJ5S2V5cywgZm91bmRWYWx1ZXMpOworfQor
Cit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0
Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpCit7CisgICAgbV90cmFuc2FjdGlvbi0+YWRkUGVu
ZGluZ0V2ZW50cygtdW51c2VkUHJlZmV0Y2hlcyk7CisgICAgbV9jdXJzb3IgPSBtX3NhdmVkQ3Vy
c29yOworICAgIG1fc2F2ZWRDdXJzb3IgPSAwOworCisgICAgaWYgKG1fY3Vyc29yKSB7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXNlZFByZWZldGNoZXM7ICsraSkgeworICAgICAgICAg
ICAgYm9vbCBvayA9IG1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgSURCQ3Vy
c29yQmFja2VuZEltcGw6OmNsb3NlKCkKIHsKICAgICBpZiAobV9jdXJzb3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggZWM1ODUyMDc4Mjdh
MmQyMmEzZGUyY2E3YTg2ZTNkZWJiM2M3NjM2NC4uNmM2YzNkMTBiOTI3OGYwNzNhNDQyNTM1ODYz
MTRjNDc2NmI3ODAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuaApAQCAtNjEsMTQgKzYxLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNo
Q29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJl
ZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpOwogICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBDdXJzb3JU
eXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlRnVuY3Rpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICBz
dGF0aWMgdm9pZCBwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBpbnQsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IG1fY3Vy
c29yOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9zYXZlZEN1cnNvcjsK
ICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBDdXJzb3JUeXBlIG1f
Y3Vyc29yVHlwZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBt
X3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCAzZjZkOWZkOTA2YTYyOTMyOGVlYjcyNGQ3ZTJhYzFhNzU1
YjVjY2NkLi5iNTdiYjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVjY2JmNmRiMDc2YzAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApA
QCAtNjEsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0
Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1
c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuaAppbmRleCA5MWM5MjU3NDY1MTk5NzQ2ZDA2
NWUwZWJlMTVlYWQ2NWE0MTFkYWQ2Li43MDYwMzYxMzgyZTI1MmIzZjMyYzI2MTBmN2Q0ODdkMTMw
ZGFmMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5KG5ldyBJREJLZXkoKSk7CiAg
ICAgICAgIGlkYktleS0+bV90eXBlID0gSW52YWxpZFR5cGU7CisgICAgICAgIGlkYktleS0+bV9z
aXplRXN0aW1hdGUgPSAwOwogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9
CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJL
ZXkobmV3IElEQktleSgpKTsKICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBOdW1iZXJUeXBlOwog
ICAgICAgICBpZGJLZXktPm1fbnVtYmVyID0gbnVtYmVyOworICAgICAgICBpZGJLZXktPm1fc2l6
ZUVzdGltYXRlID0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgICAgIHJldHVybiBpZGJLZXkucmVsZWFz
ZSgpOwogICAgIH0KIApAQCAtNTksNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxJ
REJLZXk+IGlkYktleShuZXcgSURCS2V5KCkpOwogICAgICAgICBpZGJLZXktPm1fdHlwZSA9IFN0
cmluZ1R5cGU7CiAgICAgICAgIGlkYktleS0+bV9zdHJpbmcgPSBzdHJpbmc7CisgICAgICAgIGlk
YktleS0+bV9zaXplRXN0aW1hdGUgPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwog
ICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTY3LDYgKzcwLDcg
QEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkobmV3IElEQktleSgpKTsK
ICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBEYXRlVHlwZTsKICAgICAgICAgaWRiS2V5LT5tX2Rh
dGUgPSBkYXRlOworICAgICAgICBpZGJLZXktPm1fc2l6ZUVzdGltYXRlID0gc2l6ZW9mKGRvdWJs
ZSk7CiAgICAgICAgIHJldHVybiBpZGJLZXkucmVsZWFzZSgpOwogICAgIH0KIApAQCAtNzUsNiAr
NzksMTEgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkobmV3IElEQktl
eSgpKTsKICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBBcnJheVR5cGU7CiAgICAgICAgIGlkYktl
eS0+bV9hcnJheSA9IGFycmF5OworCisgICAgICAgIGlkYktleS0+bV9zaXplRXN0aW1hdGUgPSAx
MDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBpZGJLZXktPm1fc2l6ZUVzdGltYXRlICs9IGFycmF5W2ldLT5tX3NpemVFc3Rp
bWF0ZTsKKwogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTEy
MSw2ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xlc3NUaGFuKGNvbnN0IElEQktleSog
b3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNFcXVhbChjb25zdCBJREJLZXkqIG90aGVyKSBjb25z
dDsKIAorICAgIHNpemVfdCBzaXplRXN0aW1hdGUoKSBjb25zdCB7IHJldHVybiBtX3NpemVFc3Rp
bWF0ZTsgfQorCiAgICAgc3RhdGljIGludCBjb21wYXJlVHlwZXMoVHlwZSBhLCBUeXBlIGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYiAtIGE7CkBAIC0xMzcsNiArMTQ4LDggQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgZG91YmxlIG1fZGF0ZTsKICAgICBkb3VibGUgbV9u
dW1iZXI7CisKKyAgICBzaXplX3QgbV9zaXplRXN0aW1hdGU7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlYzc1
ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRjLi4wYzMwNThkMjM2OWRhY2ZlNjM5
MjZlYjY3YjNiYmU3Mjg1ZTJhZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTkzOSw2ICs5MzksMjIgQEAgcHJvdGVjdGVk
OgogICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQogICAgIHsKICAgICB9
CisKKyAgICBDdXJzb3JJbXBsQ29tbW9uKGNvbnN0IEN1cnNvckltcGxDb21tb24qIG90aGVyKQor
ICAgICAgICA6IG1fdHJhbnNhY3Rpb24ob3RoZXItPm1fdHJhbnNhY3Rpb24pCisgICAgICAgICwg
bV9jdXJzb3JPcHRpb25zKG90aGVyLT5tX2N1cnNvck9wdGlvbnMpCisgICAgICAgICwgbV9jdXJy
ZW50S2V5KG90aGVyLT5tX2N1cnJlbnRLZXkpCisgICAgeworICAgICAgICBpZiAob3RoZXItPm1f
aXRlcmF0b3IpIHsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVh
dGVJdGVyYXRvcigpOworCisgICAgICAgICAgICBpZiAob3RoZXItPm1faXRlcmF0b3ItPmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnNlZWsob3RoZXItPm1faXRlcmF0
b3ItPmtleSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9pdGVyYXRvci0+aXNWYWxpZCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHZpcnR1YWwgfkN1cnNv
ckltcGxDb21tb24oKSB7fQogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9u
OwpAQCAtMTA1Miw2ICsxMDY4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBPYmplY3RTdG9yZUN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsK
ICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAg
dmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
Zmllcj4gb2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIDA7IH0KQEAgLTEwNjQsNiArMTA4NSwxMiBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKKyAgICBPYmplY3RTdG9yZUN1cnNvckltcGwoY29uc3QgT2JqZWN0U3RvcmVDdXJzb3JJ
bXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJbXBsQ29tbW9uKG90aGVyKQorICAgICAgICAs
IG1fY3VycmVudFZhbHVlKG90aGVyLT5tX2N1cnJlbnRWYWx1ZSkKKyAgICB7CisgICAgfQorCiAg
ICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOwogfTsKIApAQCAtMTA5OSw2ICsxMTI2LDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodHJh
bnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAv
LyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9CkBAIC0xMTEyLDYg
KzExNDQsMTIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCisgICAgSW5kZXhLZXlDdXJzb3JJ
bXBsKGNvbnN0IEluZGV4S2V5Q3Vyc29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1w
bENvbW1vbihvdGhlcikKKyAgICAgICAgLCBtX3ByaW1hcnlLZXkob3RoZXItPm1fcHJpbWFyeUtl
eSkKKyAgICB7CisgICAgfQorCiAgICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwogfTsK
IApAQCAtMTE2Miw2ICsxMjAwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbmRleEN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9
CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25l
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRo
aXMpKTsKKyAgICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJp
bmcgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQpAQCAtMTE3NSw2ICsx
MjE4LDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIEluZGV4Q3Vyc29ySW1wbChj
b25zdCBJbmRleEN1cnNvckltcGwqIG90aGVyKQorICAgICAgICA6IEN1cnNvckltcGxDb21tb24o
b3RoZXIpCisgICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5tX3ByaW1hcnlLZXkpCisgICAg
ICAgICwgbV92YWx1ZShvdGhlci0+bV92YWx1ZSkKKyAgICAgICAgLCBtX3ByaW1hcnlMZXZlbERC
S2V5KG90aGVyLT5tX3ByaW1hcnlMZXZlbERCS2V5KQorICAgIHsKKyAgICB9CisKICAgICBSZWZQ
dHI8SURCS2V5PiBtX3ByaW1hcnlLZXk7CiAgICAgU3RyaW5nIG1fdmFsdWU7CiAgICAgVmVjdG9y
PGNoYXI+IG1fcHJpbWFyeUxldmVsREJLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcAppbmRleCAzMDk2ZDdmZjBkMGQ5YWU0NWM0YTY3MzliNTVhZDVhNTg3YTlhOTUwLi41NWJl
MzRlZTYyYjE2NmFkNWIxMDJlOWRmZTk3NTQyZmM3NmMzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKQEAgLTMzNyw2ICszMzcsMTQgQEAgYm9vbCBJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICB0YXJnZXRzLmFw
cGVuZChtX3RyYW5zYWN0aW9uLT5kYigpKTsKICAgICB9CiAKKyAgICBSZWZQdHI8SURCQ3Vyc29y
PiBjdXJzb3JUb05vdGlmeTsKKyAgICBpZiAobV9yZXN1bHQpIHsKKyAgICAgICAgaWYgKG1fcmVz
dWx0LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgY3Vyc29y
VG9Ob3RpZnkgPSBtX3Jlc3VsdC0+aWRiQ3Vyc29yKCk7CisgICAgICAgIGVsc2UgaWYgKG1fcmVz
dWx0LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQorICAgICAgICAg
ICAgY3Vyc29yVG9Ob3RpZnkgPSBtX3Jlc3VsdC0+aWRiQ3Vyc29yV2l0aFZhbHVlKCk7CisgICAg
fQorCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNoaW5n
LCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UuCiAgICAgQVNTRVJUKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJs
b2NrZWRFdmVudCk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKQEAgLTM0NSw2ICszNTMsOSBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiBt
X3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBt
X3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkKICAgICAg
ICAgbV9yZXF1ZXN0RmluaXNoZWQgPSB0cnVlOwogCisgICAgaWYgKGN1cnNvclRvTm90aWZ5KQor
ICAgICAgICBjdXJzb3JUb05vdGlmeS0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKwog
ICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIC8vIElmIGFuIGVycm9yIGV2ZW50IGFu
ZCB0aGUgZGVmYXVsdCB3YXNuJ3QgcHJldmVudGVkLi4uCiAgICAgICAgIGlmIChkb250UHJldmVu
dERlZmF1bHQgJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggMTUzNTUzYzE2Y2JjN2ZjZDY0MzNhYjcx
YzNjMzVmYTc4NTMwZDQ5Zi4uZjdhZDE2OWYxYjNkYWJhMWVmYjhmN2I0MzQzNzU5NmY2ZmM1YzQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNo
KFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IHBy
aW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVkLiBDYWxsYmFjayBz
aG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYjQ1MjYwMDMx
ZGM3NDJhZmUxZjc0YjZlMDk1OGMwMTc1NmUwNDhhNC4uMjRmYTFjNjA1MjEyZDFmMmU3MGFmMDVm
ZTY5Y2I5MzRiNDIyMjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0xNDcsNiArMTQ3LDEyIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFj
a2VuZEltcGwqIGN1cnNvCiAgICAgbV9vcGVuQ3Vyc29ycy5yZW1vdmUoY3Vyc29yKTsKIH0KIAor
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphZGRQZW5kaW5nRXZlbnRzKGludCBuKQor
eworICAgIG1fcGVuZGluZ0V2ZW50cyArPSBuOworICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudHMg
Pj0gMCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVU
YXNrRXZlbnRzKCkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMzIw
ZDJiYzZiNDE1NjE0NWFiODVlOTZlYmJhYmM2YzU5MjEzMzBkNy4uMmY5YzJiYTg0MTJhMjlkYjlm
OTYzY2JlYmQxY2U1NmFlYTczYmQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNh
bGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNhbGxiYWNrczsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpOwogCiAgICAgdm9pZCBydW4oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgKaW5kZXggNDRiNTU2M2JkYmJjZjQ3ZWE2MWQ5OGRmNjRkNDBjZjAxOGQ1NDYyMC4u
MDAzZGJmZGNjZjU0MjkyYjgyYWFiMmMzNWYyYWRiY2UwZjUxZDY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tz
KElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaAppbmRleCBlMWE4NTYyY2E2OWY2OGU3MWRlNzBmMzMyNGY3M2Y0OTY3MjkwZGI5Li45
YThhN2Q4ZTY5OTA2OTMyZjFiYjk0ZGMxMDFmOGNlNjAxYjNjYTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3NfaAogI2RlZmluZSBXZWJJREJDYWxsYmFja3NfaAog
CisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NX
aXRoQ29udGludWF0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKFdlYlZlY3RvcjxXZWJJREJL
ZXk+IGtleXMsIFdlYlZlY3RvcjxXZWJJREJLZXk+IHByaW1hcnlLZXlzLCBXZWJWZWN0b3I8V2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKaW5kZXggOTJkYzE4YjlhNzEyMmVjOGZlNDk0MTNl
OWZmYWZlNGIzZGViZmNiNy4uOTZiMTc2NWQ4NDQ0MzBiMmNiODMwNmMzZGYwNjJmMjczNjUxMDdj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAg
LTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
RXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJF
eGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFBy
ZWZldGNoZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkgeyB9IC8vIE9ubHkgdXNlZCBpbiBmcm9u
dGVuZC4KIAogcHJvdGVjdGVkOgogICAgIFdlYklEQkN1cnNvcigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKaW5kZXggMjg1YzFm
YTczZjA1NDhkYmFiZGJmYzUwMjczNTcwZjk4ODNlMzdiMy4uNGQ0ODAwMTEzMmVlYWEwZjMxYzA4
MWZjNzBkZGNlZjhhNDIyZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMo
aW50KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
V2ViSURCVHJhbnNhY3Rpb24oKSB7fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAwZWVjMTViMGNiNWRiMWZiODFiMTAyNWU1
YWM4MzBlZWJmYzg4MGJkLi4xOWMyMTUwZGQ0Y2ZiZGQ2NzVjNmRlMjQ4NmRhYzlhNGYxMDIxMzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwCkBAIC05OSw2ICs5OSwyMyBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NX
aXRoQ29udGludWF0aW9uKCkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0
Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4g
cHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVl
cykKK3sKKyAgICBjb25zdCBzaXplX3QgbiA9IGtleXMuc2l6ZSgpOworCisgICAgV2ViVmVjdG9y
PFdlYklEQktleT4gd2ViS2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJQcmlt
YXJ5S2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiB3ZWJW
YWx1ZXMobik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAg
ICB3ZWJLZXlzW2ldID0gV2ViSURCS2V5KGtleXNbaV0pOworICAgICAgICB3ZWJQcmltYXJ5S2V5
c1tpXSA9IFdlYklEQktleShwcmltYXJ5S2V5c1tpXSk7CisgICAgICAgIHdlYlZhbHVlc1tpXSA9
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZXNbaV0pOworICAgIH0KKworICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2god2ViS2V5cywgd2ViUHJpbWFyeUtleXMsIHdl
YlZhbHVlcyk7Cit9CisKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCiB7CiAg
ICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggMDM1Yzg4OGYyNjhjOTFmNTBmZmZlZmE4MWRh
ZWEzMGRlNTQzMDFmMC4uYjg0MWMzNDNiZjJmYzY4ZmZlZDVkN2FiMmU3NDE2ZGRmODAxNDI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBA
IC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OklEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiBwcmlt
YXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4g
dmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNw
cAppbmRleCA3ZGFiNmEyOGZhMjBmYThkYzUxYjZmNzdhZDI1MGZmYjdjMDVmN2E0Li43ZDQ2ZTg0
YWQwYzRkNDZiZjFmODkzZWE4MTMwMDRjMTNjNjBmMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKQEAgLTg5LDYgKzg5
LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFCiAgICAgbV9pZGJDdXJzb3ItPmRlbGV0ZUZ1
bmN0aW9uKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KIAordm9p
ZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkKK3sK
KyAgICBtX2lkYkN1cnNvci0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5
LmgKaW5kZXggZDcyNTM2MDUwMjljYzkyYmY4YTBhODYwNWQwNDQzZTg1NTgxYmYwMi4uNzY5NmRh
ZmRkMTQ0NjM0OTE0NDNjNzlkNTFmYmYwMTU3NzE1MGY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQg
biwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tl
bmQuCisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBp
bnQgdW51c2VkUHJlZmV0Y2hlcykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVz
ZWQgaW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNh
bGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZFByb3h5KFBhc3NPd25Q
dHI8V2ViSURCQ3Vyc29yPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRleCBlYzJkZjlkMjVjYjI3ZWFlOTlh
M2YzNjM3Y2Q3ZmM2NTZiZGI1NTBkLi5hZmVmMDA4MmNkZjE2NDVhNzdjMzMxYjc4MDZlM2I0YWRl
MWNmOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25DYWxsYmFja3Mq
KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKFdlYkNvcmU6OklEQkN1cnNv
ckJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRp
bmdFdmVudHMoaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBXZWJJREJUcmFu
c2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dlYklEQlRy
YW5zYWN0aW9uLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggNWQ2Nzc1N2Y5MzkzNzg4ZTRlZTQ1YjhhYWE1YTk2NGNk
ZDI5MmY5ZS4uNjZlZDcwOWM1YzUyMDU5ZmMyZWYxMDkyZTVkNzI1YTkwZWQyYjJlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKQEAgLTgy
LDYgKzgyLDE2IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6ZGVsZXRlRnVuY3Rpb24oV2ViSURC
Q2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvCiAgICAgbV9pZGJDdXJzb3JCYWNr
ZW5kLT5kZWxldGVGdW5jdGlvbihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNh
bGxiYWNrcykpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hDb250
aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hDb250
aW51ZShudW1iZXJUb0ZldGNoLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNh
bGxiYWNrcykpLCBlYyk7Cit9CisKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hSZXNl
dChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1faWRi
Q3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hSZXNldCh1c2VkUHJlZmV0Y2hlcywgdW51c2VkUHJlZmV0
Y2hlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJDdXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJz
b3JJbXBsLmgKaW5kZXggYzIzNzkyMDczY2NkMjRhNGYzMDQ4NjNlZDUzMzkyNmFlMGRkZDZjMC4u
ZDgyMjY0ZTJkZTY4ODMwMjhmZGRjMmU3ZGU1YTJiZTYxZjk0NDMxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaApAQCAtNTEsNiArNTEsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVh
bCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tz
KiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihX
ZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHBy
ZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFBy
ZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKIAogIHByaXZhdGU6CiAgICAgV1RGOjpS
ZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3JCYWNr
ZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116976</attachid>
            <date>2011-11-29 08:29:10 -0800</date>
            <delta_ts>2011-11-30 11:32:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111129162908.patch</filename>
            <type>text/plain</type>
            <size>32336</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmY2Y4M2ZmYmJjMTc3MGIxZDIyN2JlOTc2OTZmNmRkN2RiOWM2NmM4Li43
OTIyYTg0NDY1NDU1OTQ0YTY2NjUxZDZkZDI5MmE4NWI3NTY5NmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjQgQEAKKzIwMTEtMTEtMjkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6
CisgICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0
Y2hpbmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRo
ZSBjdXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJh
Y2sgdmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAg
ICAgVGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9y
ZSB0aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3Jl
YXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6c2l6ZUVzdGltYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vyc29ySW1wbENv
bW1vbjo6Q3Vyc29ySW1wbENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpPYmplY3RTdG9yZUN1cnNvckltcGw6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
ck9wdGlvbnM6Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6T2JqZWN0U3RvcmVDdXJzb3JJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9wdGlvbnM6OkluZGV4S2V5Q3Vyc29ySW1wbDo6Y2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6SW5kZXhLZXlDdXJzb3JJbXBs
OjpJbmRleEtleUN1cnNvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6
SW5kZXhDdXJzb3JJbXBsOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpJbmRleEN1cnNvckltcGw6OkluZGV4Q3Vyc29ySW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2FsbCB0aGUgcG9zdFN1
Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyk6Cisg
ICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGV4dHJhIHBl
bmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZldGNoZXMgbiBlbGVt
ZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVjdCB0byBzZWUgbiBl
eHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaDoKKwogMjAxMS0xMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSW1wcm92ZSBGb250TWV0cmljcyBhY2N1cmFjeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkN2QyZGYzYjgxZGQ1MTc3NjAwZTI3MTU2YjY1NzE0
MmE4ZjVlNjUxLi4wMjg0Nzg2ZGRlOGU1NDk2YzI0ODlkOTUyZmZiMzhjOTQzMTEwMjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTExLTI5ICBIYW5z
IFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJz
b3IgcHJlLWZldGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBwbHVtYmluZyBmb3IgbmV3IHByZS1mZXRjaGluZyByZWxhdGVkIGZ1bmN0aW9u
cy4KKworICAgICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCQ2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHB1
YmxpYy9XZWJJREJDdXJzb3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxl
dGVGdW5jdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250
aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2sp
OgorICAgICAgICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJJREJUcmFuc2FjdGlvbjo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6
Om9uU3VjY2Vzc1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5
Lmg6CisgICAgICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OklEQkN1cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2sp
OgorICAgICAgICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdl
YktpdDo6SURCQ3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKiBz
cmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9X
ZWJJREJDdXJzb3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6
cHJlZmV0Y2hDb250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnBy
ZWZldGNoUmVzZXQpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6CisKIDIwMTEt
MTEtMjkgIEppbmcgWmhhbyAgPGppbmd6aGFvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBc3Nl
cnRpb24gZmFpbHMgd2hlbiBvcGVuaW5nIHR3byBwb3B1cCBtZW51cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggNmIwYTA0MGY5ZmM0ZDJiODcwZDRmYWM0YWY0
YzQ2YWEwZjAzNDA1Yy4uODBjNzNmNjY3YjQyNjlkOGI5OTcyODIyNzk5NTMwMDRiMWJlNjE3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC04OCw2ICs4OCw3
IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIEN1cnNvciA6IHB1YmxpYyBSZWZDb3VudGVkPEN1cnNv
cj4gewogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEN1cnNvcj4gY2xv
bmUoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IElE
QktleSogPSAwKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSgp
ID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCmluZGV4IDY4MTU5YzUxZGMxMGVj
MTMwYTRlNGY3YTZiOTFjNmZjOWFlOWJiMTMuLjFlNjUyZTRkNjE3YmI3NzNlNDFhNjk5MDM3Mzlh
NTY3YjI1MzI5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJh
Y2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaApAQCAtNTYs
NiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywg
VmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiA+IHZhbHVlcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2Nr
ZWQoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1
cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKaW5kZXggZWRj
NmU4M2ViZTk5NWUxOTk5ZDZmYjA3YzJjYWUwZDVmZjQ4OWJmZC4uMTY2YzJkZDZkM2QwOWU2NGVh
MzFkNzBmNjAxYWU0NjA1OTlkYzFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNw
cApAQCAtMTA2LDggKzEwNiw4IEBAIHZvaWQgSURCQ3Vyc29yOjpjb250aW51ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIEZJWE1FOiBX
ZSdyZSBub3QgdXNpbmcgdGhlIGNvbnRleHQgZnJvbSB3aGVuIGNvbnRpbnVlIHdhcyBjYWxsZWQs
IHdoaWNoIG1lYW5zIHRoZSBjYWxsYmFjawogICAgIC8vICAgICAgICB3aWxsIGJlIG9uIHRoZSBv
cmlnaW5hbCBjb250ZXh0IG9wZW5DdXJzb3Igd2FzIGNhbGxlZCBvbi4gSXMgdGhpcyByaWdodD8K
ICAgICBpZiAobV9yZXF1ZXN0LT5yZXNldFJlYWR5U3RhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkp
IHsKLSAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1ZXN0LCBl
Yyk7CiAgICAgICAgIG1fcmVxdWVzdC0+c2V0Q3Vyc29yKHRoaXMpOworICAgICAgICBtX2JhY2tl
bmQtPmNvbnRpbnVlRnVuY3Rpb24oa2V5LCBtX3JlcXVlc3QsIGVjKTsKICAgICB9IGVsc2UKICAg
ICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOwogfQpAQCAt
MTIzLDYgKzEyMywxMSBAQCBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRl
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogICAgIHJldHVybiByZXF1
ZXN0LnJlbGVhc2UoKTsKIH0KIAordm9pZCBJREJDdXJzb3I6OnBvc3RTdWNjZXNzSGFuZGxlckNh
bGxiYWNrKCkKK3sKKyAgICBtX2JhY2tlbmQtPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKaW5kZXggNzk5MDg0NDExMzIw
YmVkZGY0OWQwZWJhZWEyZTExOTlhMTNlNjdiMS4uYmE0OWQ4MjdjZDQwNWIzOWMyYjliYzVmNmI5
N2MyZGE1NTJkMzA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCkBAIC03MCw2ICs3
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXk+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVG
dW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
dm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworCiBwcm90ZWN0ZWQ6CiAgICAgSURC
Q3Vyc29yKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIElEQlJlcXVlc3Qq
LCBJREJBbnkqIHNvdXJjZSwgSURCVHJhbnNhY3Rpb24qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBkMTY5OGQwZmZhMDgwZTMz
MzU3ZjFmNjQ1ZWQ0MmYyNjM0NTdiMzYxLi41MWI0M2E2M2E2OTUwNjc5YzJhYTdjMGYyM2VlNWVk
OTI4NTMzMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tl
bmRJbXBsLmNwcApAQCAtOTAsMTAgKzkwLDggQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6
dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZSwgUGFzc1IKIAog
dm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElE
QktleT4gcHJwS2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNv
ciA9IHRoaXM7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwotICAgIFJlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKLSAgICBpZiAoIW1fdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJ
bXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIGN1cnNvciwga2V5LCBjYWxsYmFja3MpKSkK
KyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxsYmFja1Rhc2so
JklEQkN1cnNvckJhY2tlbmRJbXBsOjpjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwsIHRoaXMsIGtl
eSwgcHJwQ2FsbGJhY2tzKSkpCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5P
VF9BTExPV0VEX0VSUjsKIH0KIApAQCAtMTIzLDYgKzEyMSw2NCBAQCB2b2lkIElEQkN1cnNvckJh
Y2tlbmRJbXBsOjpkZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGJhY2tzLAogICAgIG1fb2JqZWN0U3RvcmUtPmRlbGV0ZUZ1bmN0aW9uKG1fY3Vyc29yLT5wcmlt
YXJ5S2V5KCksIHBycENhbGxiYWNrcywgbV90cmFuc2FjdGlvbi5nZXQoKSwgZWMpOwogfQogCit2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0Zl
dGNoLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhjcmVhdGVDYWxs
YmFja1Rhc2soJklEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWws
IHRoaXMsIG51bWJlclRvRmV0Y2gsIHBycENhbGxiYWNrcykpKQorICAgICAgICBlYyA9IElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7Cit9CisKK3ZvaWQgSURCQ3Vyc29yQmFj
a2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1wbD4gcHJwQ3Vyc29yLCBpbnQgbnVtYmVy
VG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKK3sKKyAgICBSZWZQ
dHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IGN1cnNvciA9IHBycEN1cnNvcjsKKworICAgIFZlY3Rv
cjxSZWZQdHI8SURCS2V5PiA+IGZvdW5kS2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4g
PiBmb3VuZFByaW1hcnlLZXlzOworICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiA+IGZvdW5kVmFsdWVzOworCisgICAgaWYgKGN1cnNvci0+bV9jdXJzb3IpCisgICAgICAg
IGN1cnNvci0+bV9zYXZlZEN1cnNvciA9IGN1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CisKKyAg
ICBjb25zdCBzaXplX3Qga01heFNpemVFc3RpbWF0ZSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAg
c2l6ZV90IHNpemVFc3RpbWF0ZSA9IDA7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJl
clRvRmV0Y2g7ICsraSkgeworICAgICAgICBpZiAoc2l6ZUVzdGltYXRlID4ga01heFNpemVFc3Rp
bWF0ZSB8fCAhY3Vyc29yLT5tX2N1cnNvciB8fCAhY3Vyc29yLT5tX2N1cnNvci0+Y29udGludWVG
dW5jdGlvbigwKSkgeworICAgICAgICAgICAgY3Vyc29yLT5tX2N1cnNvciA9IDA7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZvdW5kS2V5cy5hcHBlbmQoY3Vyc29y
LT5tX2N1cnNvci0+a2V5KCkpOworICAgICAgICBmb3VuZFByaW1hcnlLZXlzLmFwcGVuZChjdXJz
b3ItPm1fY3Vyc29yLT5wcmltYXJ5S2V5KCkpOworICAgICAgICBmb3VuZFZhbHVlcy5hcHBlbmQo
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZShjdXJzb3ItPm1fY3Vyc29yLT52
YWx1ZSgpKSk7CisKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IGN1cnNvci0+bV9jdXJzb3ItPmtl
eSgpLT5zaXplRXN0aW1hdGUoKTsKKyAgICAgICAgc2l6ZUVzdGltYXRlICs9IGN1cnNvci0+bV9j
dXJzb3ItPnByaW1hcnlLZXkoKS0+c2l6ZUVzdGltYXRlKCk7CisgICAgICAgIHNpemVFc3RpbWF0
ZSArPSBjdXJzb3ItPm1fY3Vyc29yLT52YWx1ZSgpLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsK
KyAgICB9CisKKyAgICBpZiAoIWZvdW5kS2V5cy5zaXplKCkpIHsKKyAgICAgICAgY2FsbGJhY2tz
LT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjdXJzb3ItPm1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdF
dmVudHMoZm91bmRLZXlzLnNpemUoKSAtIDEpOworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzV2l0
aFByZWZldGNoKGZvdW5kS2V5cywgZm91bmRQcmltYXJ5S2V5cywgZm91bmRWYWx1ZXMpOworfQor
Cit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0
Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpCit7CisgICAgbV90cmFuc2FjdGlvbi0+YWRkUGVu
ZGluZ0V2ZW50cygtdW51c2VkUHJlZmV0Y2hlcyk7CisgICAgbV9jdXJzb3IgPSBtX3NhdmVkQ3Vy
c29yOworICAgIG1fc2F2ZWRDdXJzb3IgPSAwOworCisgICAgaWYgKG1fY3Vyc29yKSB7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdXNlZFByZWZldGNoZXM7ICsraSkgeworICAgICAgICAg
ICAgYm9vbCBvayA9IG1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKCk7CisgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKG9rLCBvayk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgSURCQ3Vy
c29yQmFja2VuZEltcGw6OmNsb3NlKCkKIHsKICAgICBpZiAobV9jdXJzb3IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKaW5kZXggZWM1ODUyMDc4Mjdh
MmQyMmEzZGUyY2E3YTg2ZTNkZWJiM2M3NjM2NC4uNmM2YzNkMTBiOTI3OGYwNzNhNDQyNTM1ODYz
MTRjNDc2NmI3ODAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFj
a2VuZEltcGwuaApAQCAtNjEsMTQgKzYxLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNo
Q29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJl
ZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpOwogICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZEltcGwoUGFzc1JlZlB0
cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4sIElEQkN1cnNvcjo6RGlyZWN0aW9uLCBDdXJzb3JU
eXBlLCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBJREJPYmplY3RTdG9yZUJhY2tl
bmRJbnRlcmZhY2UqKTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnRpbnVlRnVuY3Rpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW1w
bD4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+KTsKKyAgICBz
dGF0aWMgdm9pZCBwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBpbnQsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPik7CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IG1fY3Vy
c29yOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9zYXZlZEN1cnNvcjsK
ICAgICBJREJDdXJzb3I6OkRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBDdXJzb3JUeXBlIG1f
Y3Vyc29yVHlwZTsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBt
X3RyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2UuaAppbmRleCAzZjZkOWZkOTA2YTYyOTMyOGVlYjcyNGQ3ZTJhYzFhNzU1
YjVjY2NkLi5iNTdiYjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVjY2JmNmRiMDc2YzAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApA
QCAtNjEsNiArNjEsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhj
ZXB0aW9uQ29kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNv
ZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0
Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1
c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuaAppbmRleCA5MWM5MjU3NDY1MTk5NzQ2ZDA2
NWUwZWJlMTVlYWQ2NWE0MTFkYWQ2Li43MDYwMzYxMzgyZTI1MmIzZjMyYzI2MTBmN2Q0ODdkMTMw
ZGFmMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmgKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5KG5ldyBJREJLZXkoKSk7CiAg
ICAgICAgIGlkYktleS0+bV90eXBlID0gSW52YWxpZFR5cGU7CisgICAgICAgIGlkYktleS0+bV9z
aXplRXN0aW1hdGUgPSAwOwogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9
CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJL
ZXkobmV3IElEQktleSgpKTsKICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBOdW1iZXJUeXBlOwog
ICAgICAgICBpZGJLZXktPm1fbnVtYmVyID0gbnVtYmVyOworICAgICAgICBpZGJLZXktPm1fc2l6
ZUVzdGltYXRlID0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgICAgIHJldHVybiBpZGJLZXkucmVsZWFz
ZSgpOwogICAgIH0KIApAQCAtNTksNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxJ
REJLZXk+IGlkYktleShuZXcgSURCS2V5KCkpOwogICAgICAgICBpZGJLZXktPm1fdHlwZSA9IFN0
cmluZ1R5cGU7CiAgICAgICAgIGlkYktleS0+bV9zdHJpbmcgPSBzdHJpbmc7CisgICAgICAgIGlk
YktleS0+bV9zaXplRXN0aW1hdGUgPSBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwog
ICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTY3LDYgKzcwLDcg
QEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkobmV3IElEQktleSgpKTsK
ICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBEYXRlVHlwZTsKICAgICAgICAgaWRiS2V5LT5tX2Rh
dGUgPSBkYXRlOworICAgICAgICBpZGJLZXktPm1fc2l6ZUVzdGltYXRlID0gc2l6ZW9mKGRvdWJs
ZSk7CiAgICAgICAgIHJldHVybiBpZGJLZXkucmVsZWFzZSgpOwogICAgIH0KIApAQCAtNzUsNiAr
NzksMTEgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkobmV3IElEQktl
eSgpKTsKICAgICAgICAgaWRiS2V5LT5tX3R5cGUgPSBBcnJheVR5cGU7CiAgICAgICAgIGlkYktl
eS0+bV9hcnJheSA9IGFycmF5OworCisgICAgICAgIGlkYktleS0+bV9zaXplRXN0aW1hdGUgPSAx
MDA7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXkuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBpZGJLZXktPm1fc2l6ZUVzdGltYXRlICs9IGFycmF5W2ldLT5tX3NpemVFc3Rp
bWF0ZTsKKwogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTEy
MSw2ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xlc3NUaGFuKGNvbnN0IElEQktleSog
b3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNFcXVhbChjb25zdCBJREJLZXkqIG90aGVyKSBjb25z
dDsKIAorICAgIHNpemVfdCBzaXplRXN0aW1hdGUoKSBjb25zdCB7IHJldHVybiBtX3NpemVFc3Rp
bWF0ZTsgfQorCiAgICAgc3RhdGljIGludCBjb21wYXJlVHlwZXMoVHlwZSBhLCBUeXBlIGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYiAtIGE7CkBAIC0xMzcsNiArMTQ4LDggQEAgcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgZG91YmxlIG1fZGF0ZTsKICAgICBkb3VibGUgbV9u
dW1iZXI7CisKKyAgICBzaXplX3QgbV9zaXplRXN0aW1hdGU7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlYzc1
ZDBmYzA2ZDk1ZGVjYWZjNDU5ZGY3Y2E2MDlhYTY0MGM2ZDRjLi4wYzMwNThkMjM2OWRhY2ZlNjM5
MjZlYjY3YjNiYmU3Mjg1ZTJhZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTkzOSw2ICs5MzksMjIgQEAgcHJvdGVjdGVk
OgogICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhjdXJzb3JPcHRpb25zKQogICAgIHsKICAgICB9
CisKKyAgICBDdXJzb3JJbXBsQ29tbW9uKGNvbnN0IEN1cnNvckltcGxDb21tb24qIG90aGVyKQor
ICAgICAgICA6IG1fdHJhbnNhY3Rpb24ob3RoZXItPm1fdHJhbnNhY3Rpb24pCisgICAgICAgICwg
bV9jdXJzb3JPcHRpb25zKG90aGVyLT5tX2N1cnNvck9wdGlvbnMpCisgICAgICAgICwgbV9jdXJy
ZW50S2V5KG90aGVyLT5tX2N1cnJlbnRLZXkpCisgICAgeworICAgICAgICBpZiAob3RoZXItPm1f
aXRlcmF0b3IpIHsKKyAgICAgICAgICAgIG1faXRlcmF0b3IgPSBtX3RyYW5zYWN0aW9uLT5jcmVh
dGVJdGVyYXRvcigpOworCisgICAgICAgICAgICBpZiAob3RoZXItPm1faXRlcmF0b3ItPmlzVmFs
aWQoKSkgeworICAgICAgICAgICAgICAgIG1faXRlcmF0b3ItPnNlZWsob3RoZXItPm1faXRlcmF0
b3ItPmtleSgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9pdGVyYXRvci0+aXNWYWxpZCgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIHZpcnR1YWwgfkN1cnNv
ckltcGxDb21tb24oKSB7fQogCiAgICAgTGV2ZWxEQlRyYW5zYWN0aW9uKiBtX3RyYW5zYWN0aW9u
OwpAQCAtMTA1Miw2ICsxMDY4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBPYmplY3RTdG9yZUN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsK
ICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVD
dXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAg
dmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRp
Zmllcj4gb2JqZWN0U3RvcmVSZWNvcmRJZGVudGlmaWVyKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIDA7IH0KQEAgLTEwNjQsNiArMTA4NSwxMiBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKKyAgICBPYmplY3RTdG9yZUN1cnNvckltcGwoY29uc3QgT2JqZWN0U3RvcmVDdXJzb3JJ
bXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJbXBsQ29tbW9uKG90aGVyKQorICAgICAgICAs
IG1fY3VycmVudFZhbHVlKG90aGVyLT5tX2N1cnJlbnRWYWx1ZSkKKyAgICB7CisgICAgfQorCiAg
ICAgU3RyaW5nIG1fY3VycmVudFZhbHVlOwogfTsKIApAQCAtMTA5OSw2ICsxMTI2LDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmRleEtleUN1cnNvckltcGwodHJh
bnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25lKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJzb3JJbXBsKHRoaXMpKTsKKyAgICB9CisKICAgICAv
LyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SURCS2V5PiBwcmltYXJ5S2V5KCkgeyByZXR1cm4gbV9wcmltYXJ5S2V5OyB9CkBAIC0xMTEyLDYg
KzExNDQsMTIgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCisgICAgSW5kZXhLZXlDdXJzb3JJ
bXBsKGNvbnN0IEluZGV4S2V5Q3Vyc29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1w
bENvbW1vbihvdGhlcikKKyAgICAgICAgLCBtX3ByaW1hcnlLZXkob3RoZXItPm1fcHJpbWFyeUtl
eSkKKyAgICB7CisgICAgfQorCiAgICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwogfTsK
IApAQCAtMTE2Miw2ICsxMjAwLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbmRleEN1cnNvckltcGwodHJhbnNhY3Rpb24sIGN1cnNvck9wdGlvbnMpKTsKICAgICB9
CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IGNsb25l
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRo
aXMpKTsKKyAgICB9CisKICAgICAvLyBDdXJzb3JJbXBsQ29tbW9uCiAgICAgdmlydHVhbCBTdHJp
bmcgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQpAQCAtMTE3NSw2ICsx
MjE4LDE0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIEluZGV4Q3Vyc29ySW1wbChj
b25zdCBJbmRleEN1cnNvckltcGwqIG90aGVyKQorICAgICAgICA6IEN1cnNvckltcGxDb21tb24o
b3RoZXIpCisgICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5tX3ByaW1hcnlLZXkpCisgICAg
ICAgICwgbV92YWx1ZShvdGhlci0+bV92YWx1ZSkKKyAgICAgICAgLCBtX3ByaW1hcnlMZXZlbERC
S2V5KG90aGVyLT5tX3ByaW1hcnlMZXZlbERCS2V5KQorICAgIHsKKyAgICB9CisKICAgICBSZWZQ
dHI8SURCS2V5PiBtX3ByaW1hcnlLZXk7CiAgICAgU3RyaW5nIG1fdmFsdWU7CiAgICAgVmVjdG9y
PGNoYXI+IG1fcHJpbWFyeUxldmVsREJLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcAppbmRleCAzMDk2ZDdmZjBkMGQ5YWU0NWM0YTY3MzliNTVhZDVhNTg3YTlhOTUwLi41NWJl
MzRlZTYyYjE2NmFkNWIxMDJlOWRmZTk3NTQyZmM3NmMzZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKQEAgLTMzNyw2ICszMzcsMTQgQEAgYm9vbCBJREJSZXF1ZXN0Ojpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQogICAgICAgICB0YXJnZXRzLmFw
cGVuZChtX3RyYW5zYWN0aW9uLT5kYigpKTsKICAgICB9CiAKKyAgICBSZWZQdHI8SURCQ3Vyc29y
PiBjdXJzb3JUb05vdGlmeTsKKyAgICBpZiAobV9yZXN1bHQpIHsKKyAgICAgICAgaWYgKG1fcmVz
dWx0LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JUeXBlKQorICAgICAgICAgICAgY3Vyc29y
VG9Ob3RpZnkgPSBtX3Jlc3VsdC0+aWRiQ3Vyc29yKCk7CisgICAgICAgIGVsc2UgaWYgKG1fcmVz
dWx0LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQorICAgICAgICAg
ICAgY3Vyc29yVG9Ob3RpZnkgPSBtX3Jlc3VsdC0+aWRiQ3Vyc29yV2l0aFZhbHVlKCk7CisgICAg
fQorCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgYWxsb3cgY3VzdG9tIGV2ZW50IGRpc3BhdGNoaW5n
LCB0aGlzIHdpbGwgcHJvYmFibHkgbmVlZCB0byBjaGFuZ2UuCiAgICAgQVNTRVJUKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmJs
b2NrZWRFdmVudCk7CiAgICAgYm9vbCBkb250UHJldmVudERlZmF1bHQgPSBJREJFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoKGV2ZW50LmdldCgpLCB0YXJnZXRzKTsKQEAgLTM0NSw2ICszNTMsOSBA
QCBib29sIElEQlJlcXVlc3Q6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCAmJiBt
X3Jlc3VsdCAmJiBtX3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yVHlwZSAmJiBt
X3Jlc3VsdC0+dHlwZSgpICE9IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkKICAgICAg
ICAgbV9yZXF1ZXN0RmluaXNoZWQgPSB0cnVlOwogCisgICAgaWYgKGN1cnNvclRvTm90aWZ5KQor
ICAgICAgICBjdXJzb3JUb05vdGlmeS0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKwog
ICAgIGlmIChtX3RyYW5zYWN0aW9uKSB7CiAgICAgICAgIC8vIElmIGFuIGVycm9yIGV2ZW50IGFu
ZCB0aGUgZGVmYXVsdCB3YXNuJ3QgcHJldmVudGVkLi4uCiAgICAgICAgIGlmIChkb250UHJldmVu
dERlZmF1bHQgJiYgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggMTUzNTUzYzE2Y2JjN2ZjZDY0MzNhYjcx
YzNjMzVmYTc4NTMwZDQ5Zi4uZjdhZDE2OWYxYjNkYWJhMWVmYjhmN2I0MzQzNzU5NmY2ZmM1YzQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNo
KFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IHBy
aW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1ZXMp
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVkLiBDYWxsYmFjayBz
aG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogICAgIHZpcnR1YWwgdm9pZCBvbkJs
b2NrZWQoKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKaW5kZXggYjQ1MjYwMDMx
ZGM3NDJhZmUxZjc0YjZlMDk1OGMwMTc1NmUwNDhhNC4uMjRmYTFjNjA1MjEyZDFmMmU3MGFmMDVm
ZTY5Y2I5MzRiNDIyMjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCkBAIC0xNDcsNiArMTQ3LDEyIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6dW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFj
a2VuZEltcGwqIGN1cnNvCiAgICAgbV9vcGVuQ3Vyc29ycy5yZW1vdmUoY3Vyc29yKTsKIH0KIAor
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjphZGRQZW5kaW5nRXZlbnRzKGludCBuKQor
eworICAgIG1fcGVuZGluZ0V2ZW50cyArPSBuOworICAgIEFTU0VSVChtX3BlbmRpbmdFdmVudHMg
Pj0gMCk7Cit9CisKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6ZGlkQ29tcGxldGVU
YXNrRXZlbnRzKCkKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKaW5kZXggMzIw
ZDJiYzZiNDE1NjE0NWFiODVlOTZlYmJhYmM2YzU5MjEzMzBkNy4uMmY5YzJiYTg0MTJhMjlkYjlm
OTYzY2JlYmQxY2U1NmFlYTczYmQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoSURCVHJhbnNhY3Rpb25DYWxsYmFja3MqIGNh
bGxiYWNrcykgeyBtX2NhbGxiYWNrcyA9IGNhbGxiYWNrczsgfQogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsKICAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpOwogCiAgICAgdm9pZCBydW4oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmgKaW5kZXggNDRiNTU2M2JkYmJjZjQ3ZWE2MWQ5OGRmNjRkNDBjZjAxOGQ1NDYyMC4u
MDAzZGJmZGNjZjU0MjkyYjgyYWFiMmMzNWYyYWRiY2UwZjUxZDY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5o
CkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tz
KElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ck9wZW5DdXJzb3IoSURCQ3Vyc29yQmFja2VuZEltcGwqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxs
YmFja3MuaAppbmRleCBlMWE4NTYyY2E2OWY2OGU3MWRlNzBmMzMyNGY3M2Y0OTY3MjkwZGI5Li45
YThhN2Q4ZTY5OTA2OTMyZjFiYjk0ZGMxMDFmOGNlNjAxYjNjYTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDYWxsYmFja3MuaApAQCAtMjYsNiArMjYsNyBA
QAogI2lmbmRlZiBXZWJJREJDYWxsYmFja3NfaAogI2RlZmluZSBXZWJJREJDYWxsYmFja3NfaAog
CisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NX
aXRoQ29udGludWF0aW9uKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKFdlYlZlY3RvcjxXZWJJREJL
ZXk+IGtleXMsIFdlYlZlY3RvcjxXZWJJREJLZXk+IHByaW1hcnlLZXlzLCBXZWJWZWN0b3I8V2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB2YWx1ZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKaW5kZXggOTJkYzE4YjlhNzEyMmVjOGZlNDk0MTNl
OWZmYWZlNGIzZGViZmNiNy4uOTZiMTc2NWQ4NDQ0MzBiMmNiODMwNmMzZGYwNjJmMjczNjUxMDdj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ3Vyc29yLmgKQEAg
LTYzLDcgKzYzLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2ViSURCQ2FsbGJhY2tzKiwgV2Vi
RXhjZXB0aW9uQ29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJF
eGNlcHRpb25Db2RlJiBlYykgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9u
Q29kZSYpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFBy
ZWZldGNoZXMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2
b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkgeyB9IC8vIE9ubHkgdXNlZCBpbiBmcm9u
dGVuZC4KIAogcHJvdGVjdGVkOgogICAgIFdlYklEQkN1cnNvcigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKaW5kZXggMjg1YzFm
YTczZjA1NDhkYmFiZGJmYzUwMjczNTcwZjk4ODNlMzdiMy4uNGQ0ODAwMTEzMmVlYWEwZjMxYzA4
MWZjNzBkZGNlZjhhNDIyZTliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMo
aW50KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
V2ViSURCVHJhbnNhY3Rpb24oKSB7fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAppbmRleCAwZWVjMTViMGNiNWRiMWZiODFiMTAyNWU1
YWM4MzBlZWJmYzg4MGJkLi4xOWMyMTUwZGQ0Y2ZiZGQ2NzVjNmRlMjQ4NmRhYzlhNGYxMDIxMzhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
Y3BwCkBAIC05OSw2ICs5OSwyMyBAQCB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NX
aXRoQ29udGludWF0aW9uKCkKICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpOwogfQogCit2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3NXaXRoUHJlZmV0
Y2goVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4g
cHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+IHZhbHVl
cykKK3sKKyAgICBjb25zdCBzaXplX3QgbiA9IGtleXMuc2l6ZSgpOworCisgICAgV2ViVmVjdG9y
PFdlYklEQktleT4gd2ViS2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViSURCS2V5PiB3ZWJQcmlt
YXJ5S2V5cyhuKTsKKyAgICBXZWJWZWN0b3I8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiB3ZWJW
YWx1ZXMobik7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAg
ICB3ZWJLZXlzW2ldID0gV2ViSURCS2V5KGtleXNbaV0pOworICAgICAgICB3ZWJQcmltYXJ5S2V5
c1tpXSA9IFdlYklEQktleShwcmltYXJ5S2V5c1tpXSk7CisgICAgICAgIHdlYlZhbHVlc1tpXSA9
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSh2YWx1ZXNbaV0pOworICAgIH0KKworICAgIG1fY2Fs
bGJhY2tzLT5vblN1Y2Nlc3NXaXRoUHJlZmV0Y2god2ViS2V5cywgd2ViUHJpbWFyeUtleXMsIHdl
YlZhbHVlcyk7Cit9CisKIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uQmxvY2tlZCgpCiB7CiAg
ICAgbV9jYWxsYmFja3MtPm9uQmxvY2tlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKaW5kZXggMDM1Yzg4OGYyNjhjOTFmNTBmZmZlZmE4MWRh
ZWEzMGRlNTQzMDFmMC4uYjg0MWMzNDNiZjJmYzY4ZmZlZDVkN2FiMmU3NDE2ZGRmODAxNDI1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCkBA
IC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPFdlYkNv
cmU6OklEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OklEQktleT4gPiBwcmlt
YXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4g
dmFsdWVzKTsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNw
cAppbmRleCA3ZGFiNmEyOGZhMjBmYThkYzUxYjZmNzdhZDI1MGZmYjdjMDVmN2E0Li43ZDQ2ZTg0
YWQwYzRkNDZiZjFmODkzZWE4MTMwMDRjMTNjNjBmMzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKQEAgLTg5LDYgKzg5
LDExIEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5OjpkZWxldGVGdW5jdGlvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBFCiAgICAgbV9pZGJDdXJzb3ItPmRlbGV0ZUZ1
bmN0aW9uKG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIGVjKTsKIH0KIAordm9p
ZCBJREJDdXJzb3JCYWNrZW5kUHJveHk6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkKK3sK
KyAgICBtX2lkYkN1cnNvci0+cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5
LmgKaW5kZXggZDcyNTM2MDUwMjljYzkyYmY4YTBhODYwNWQwNDQzZTg1NTgxYmYwMi4uY2ZlNmRh
ZjVkZGVkNzhkN2VhNWRmNGQ5M2UwZmIzYmExZGQ5YWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4s
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5j
dGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURC
Q2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVGdW5jdGlvbihQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShpbnQg
bnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfSAvLyBPbmx5IHVzZWQg
aW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQ
cmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fSAvLyBPbmx5IHVzZWQgaW4gdGhlIGJhY2tlbmQuCisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNj
ZXNzSGFuZGxlckNhbGxiYWNrKCk7CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yQmFja2VuZFBy
b3h5KFBhc3NPd25QdHI8V2ViSURCQ3Vyc29yPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAppbmRleCBlYzJkZjlk
MjVjYjI3ZWFlOTlhM2YzNjM3Y2Q3ZmM2NTZiZGI1NTBkLi5hZmVmMDA4MmNkZjE2NDVhNzdjMzMx
Yjc4MDZlM2I0YWRlMWNmOWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDYWxsYmFja3MoV2ViQ29yZTo6SURCVHJhbnNhY3Rp
b25DYWxsYmFja3MqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJP
cGVuQ3Vyc29yKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB2
b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICBXZWJJREJUcmFuc2FjdGlvbiogZ2V0V2ViSURCVHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3dlYklEQlRyYW5zYWN0aW9uLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5jcHAKaW5kZXggNWQ2Nzc1N2Y5MzkzNzg4ZTRlZTQ1
YjhhYWE1YTk2NGNkZDI5MmY5ZS4uNjZlZDcwOWM1YzUyMDU5ZmMyZWYxMDkyZTVkNzI1YTkwZWQy
YjJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29y
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1w
bC5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIHZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6ZGVsZXRlRnVu
Y3Rpb24oV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFdlYkV4Y2VwdGlvbkNvCiAgICAgbV9p
ZGJDdXJzb3JCYWNrZW5kLT5kZWxldGVGdW5jdGlvbihJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7CiB9CiAKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6
cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgV2ViSURCQ2FsbGJhY2tzKiBjYWxs
YmFja3MsIFdlYkV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+
cHJlZmV0Y2hDb250aW51ZShudW1iZXJUb0ZldGNoLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRl
KGFkb3B0UHRyKGNhbGxiYWNrcykpLCBlYyk7Cit9CisKK3ZvaWQgV2ViSURCQ3Vyc29ySW1wbDo6
cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQor
eworICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+cHJlZmV0Y2hSZXNldCh1c2VkUHJlZmV0Y2hlcywg
dW51c2VkUHJlZmV0Y2hlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJDdXJzb3JJbXBsLmgKaW5kZXggYzIzNzkyMDczY2NkMjRhNGYzMDQ4NjNlZDUzMzky
NmFlMGRkZDZjMC4uZDgyMjY0ZTJkZTY4ODMwMjhmZGRjMmU3ZGU1YTJiZTYxZjk0NDMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaApAQCAtNTEs
NiArNTEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShjb25zdCBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUmLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgV2ViSURCS2V5JiwgV2Vi
SURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmly
dHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxi
YWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNl
dChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKIAogIHByaXZhdGU6
CiAgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4gbV9p
ZGJDdXJzb3JCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117237</attachid>
            <date>2011-11-30 11:32:50 -0800</date>
            <delta_ts>2011-11-30 12:48:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111130193248.patch</filename>
            <type>text/plain</type>
            <size>32460</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNTAxZWI2YmE3OGE4MDhkNzc4MjIzZjZmNmU1YTU4Nzg5ODNhYWFkLi5m
OTI1YWM1Mjc2ZGVhNTkwNjI2NDlhMzdjODYwZDM1YjliNTcxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjQgQEAKKzIwMTEtMTEtMjkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6
CisgICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0
Y2hpbmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRo
ZSBjdXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJh
Y2sgdmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAg
ICAgVGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9y
ZSB0aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3Jl
YXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6c2l6ZUVzdGltYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vyc29ySW1wbENv
bW1vbjo6Q3Vyc29ySW1wbENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpPYmplY3RTdG9yZUN1cnNvckltcGw6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
ck9wdGlvbnM6Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6T2JqZWN0U3RvcmVDdXJzb3JJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9wdGlvbnM6OkluZGV4S2V5Q3Vyc29ySW1wbDo6Y2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6SW5kZXhLZXlDdXJzb3JJbXBs
OjpJbmRleEtleUN1cnNvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6
SW5kZXhDdXJzb3JJbXBsOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpJbmRleEN1cnNvckltcGw6OkluZGV4Q3Vyc29ySW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2FsbCB0aGUgcG9zdFN1
Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyk6Cisg
ICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGV4dHJhIHBl
bmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZldGNoZXMgbiBlbGVt
ZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVjdCB0byBzZWUgbiBl
eHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaDoKKwogMjAxMS0xMS0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHJlcG9ydCB3b3JrZXItcmVsYXRl
ZCBldmVudHMgdW5sZXNzIGluc3BlY3RvciBhZ2VudCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBkNTkyZWRhZjk2MDY0YTVjMGM0NGYzZjg3ZDJjNzJmMjg2OTdmMmY2
Li4zZDJlMGU4MTI3YTYzNzg3MGNkNGRiNDgwN2ZiMGQ2OTYzNWU0ZGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTExLTI5ICBIYW5zIFdlbm5ib3Jn
ICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJzb3IgcHJlLWZl
dGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBwbHVtYmluZyBmb3IgbmV3IHByZS1mZXRjaGluZyByZWxhdGVkIGZ1bmN0aW9ucy4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHB1YmxpYy9XZWJJ
REJDdXJzb3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250aW51ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAg
ICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbjo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
c1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAg
ICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklE
QkN1cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAg
ICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vy
c29yQmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYktpdDo6SURC
Q3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKiBzcmMvSURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJz
b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hD
b250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnByZWZldGNoUmVz
ZXQpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6CisKIDIwMTEtMTEtMzAgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRvIG5vdCByZXBvcnQgd29ya2VyLXJlbGF0ZWQgZXZlbnRzIHVubGVzcyBpbnNwZWN0b3Ig
YWdlbnQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjgwYzczZjY2
N2I0MjY5ZDhiOTk3MjgyMjc5OTUzMDA0YjFiZTYxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCYWNraW5nU3RvcmUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFz
cyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+IHsKICAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDYWxsYmFja3MuaAppbmRleCA2ODE1OWM1MWRjMTBlYzEzMGE0ZTRmN2E2YjkxYzZmYzlhZTli
YjEzLi4xZTY1MmU0ZDYxN2JiNzczZTQxYTY5OTAzNzM5YTU2N2IyNTMyOWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZl
dGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiB2YWx1
ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCkgPSAwOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IGVkYzZlODNlYmU5OTVlMTk5OWQ2ZmIwN2My
Y2FlMGQ1ZmY0ODliZmQuLjE2NmMyZGQ2ZDNkMDllNjRlYTMxZDcwZjYwMWFlNDYwNTk5ZGMxYjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAKQEAgLTEwNiw4ICsxMDYsOCBAQCB2
b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktleT4ga2V5LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBGSVhNRTogV2UncmUgbm90IHVzaW5nIHRoZSBjb250
ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3YXMgY2FsbGVkLCB3aGljaCBtZWFucyB0aGUgY2FsbGJh
Y2sKICAgICAvLyAgICAgICAgd2lsbCBiZSBvbiB0aGUgb3JpZ2luYWwgY29udGV4dCBvcGVuQ3Vy
c29yIHdhcyBjYWxsZWQgb24uIElzIHRoaXMgcmlnaHQ/CiAgICAgaWYgKG1fcmVxdWVzdC0+cmVz
ZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKSB7Ci0gICAgICAgIG1fYmFja2VuZC0+
Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMpOwogICAgICAgICBtX3JlcXVlc3Qt
PnNldEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9iYWNrZW5kLT5jb250aW51ZUZ1bmN0aW9uKGtl
eSwgbV9yZXF1ZXN0LCBlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VF
eGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKIH0KQEAgLTEyMyw2ICsxMjMsMTEgQEAgUGFzc1Jl
ZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQKICAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9iYWNr
ZW5kLT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQkN1cnNvci5oCmluZGV4IDc5OTA4NDQxMTMyMGJlZGRmNDlkMGViYWVhMmUxMTk5YTEz
ZTY3YjEuLmJhNDlkODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdjMmRhNTUyZDMwNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgcG9zdFN1Y2Nlc3NIYW5kbGVy
Q2FsbGJhY2soKTsKKwogcHJvdGVjdGVkOgogICAgIElEQkN1cnNvcihQYXNzUmVmUHRyPElEQkN1
cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0KiwgSURCQW55KiBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vy
c29yQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggZDE2OThkMGZmYTA4MGUzMzM1N2YxZjY0NWVkNDJmMjYzNDU3YjM2
MS4uMTA4N2Q5MTRjYzY1NzM2Yjg3ODI5YjljNmEyOTEwNmM0ZmFjNmU1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKQEAgLTkwLDEwICs5
MCw4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnVwZGF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSCiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZElt
cGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IHBycEtleSwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
UmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSB0aGlzOwogICAgIFJlZlB0cjxJ
REJLZXk+IGtleSA9IHBycEtleTsKLSAgICBSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3Mg
PSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbklu
dGVybmFsLCBjdXJzb3IsIGtleSwgY2FsbGJhY2tzKSkpCisgICAgaWYgKCFtX3RyYW5zYWN0aW9u
LT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6
Y29udGludWVGdW5jdGlvbkludGVybmFsLCB0aGlzLCBrZXksIHBycENhbGxiYWNrcykpKQogICAg
ICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1RfQUxMT1dFRF9FUlI7CiB9CiAKQEAg
LTEyMyw2ICsxMjEsNjcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6ZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywKICAgICBtX29iamVjdFN0
b3JlLT5kZWxldGVGdW5jdGlvbihtX2N1cnNvci0+cHJpbWFyeUtleSgpLCBwcnBDYWxsYmFja3Ms
IG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFtX3Ry
YW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsLCB0aGlzLCBudW1iZXJUb0ZldGNoLCBw
cnBDYWxsYmFja3MpKSkKKyAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Tk9UX0FM
TE9XRURfRVJSOworfQorCit2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpwcmVmZXRjaENvbnRp
bnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEltcGw+IHBycEN1cnNvciwgaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBs
PiBjdXJzb3IgPSBwcnBDdXJzb3I7CisKKyAgICBWZWN0b3I8UmVmUHRyPElEQktleT4gPiBmb3Vu
ZEtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gZm91bmRQcmltYXJ5S2V5czsKKyAg
ICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiBmb3VuZFZhbHVlczsKKwor
ICAgIGlmIChjdXJzb3ItPm1fY3Vyc29yKQorICAgICAgICBjdXJzb3ItPm1fc2F2ZWRDdXJzb3Ig
PSBjdXJzb3ItPm1fY3Vyc29yLT5jbG9uZSgpOworCisgICAgY29uc3Qgc2l6ZV90IGtNYXhTaXpl
RXN0aW1hdGUgPSAxMCAqIDEwMjQgKiAxMDI0OworICAgIHNpemVfdCBzaXplRXN0aW1hdGUgPSAw
OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJUb0ZldGNoOyArK2kpIHsKKyAgICAg
ICAgaWYgKCFjdXJzb3ItPm1fY3Vyc29yIHx8ICFjdXJzb3ItPm1fY3Vyc29yLT5jb250aW51ZUZ1
bmN0aW9uKDApKSB7CisgICAgICAgICAgICBjdXJzb3ItPm1fY3Vyc29yID0gMDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZm91bmRLZXlzLmFwcGVuZChjdXJzb3It
Pm1fY3Vyc29yLT5rZXkoKSk7CisgICAgICAgIGZvdW5kUHJpbWFyeUtleXMuYXBwZW5kKGN1cnNv
ci0+bV9jdXJzb3ItPnByaW1hcnlLZXkoKSk7CisgICAgICAgIGZvdW5kVmFsdWVzLmFwcGVuZChT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlKGN1cnNvci0+bV9jdXJzb3ItPnZh
bHVlKCkpKTsKKworICAgICAgICBzaXplRXN0aW1hdGUgKz0gY3Vyc29yLT5tX2N1cnNvci0+a2V5
KCktPnNpemVFc3RpbWF0ZSgpOworICAgICAgICBzaXplRXN0aW1hdGUgKz0gY3Vyc29yLT5tX2N1
cnNvci0+cHJpbWFyeUtleSgpLT5zaXplRXN0aW1hdGUoKTsKKyAgICAgICAgc2l6ZUVzdGltYXRl
ICs9IGN1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwor
CisgICAgICAgIGlmIChzaXplRXN0aW1hdGUgPiBrTWF4U2l6ZUVzdGltYXRlKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFmb3VuZEtleXMuc2l6ZSgpKSB7CisgICAgICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3Vyc29yLT5tX3RyYW5zYWN0aW9uLT5h
ZGRQZW5kaW5nRXZlbnRzKGZvdW5kS2V5cy5zaXplKCkgLSAxKTsKKyAgICBjYWxsYmFja3MtPm9u
U3VjY2Vzc1dpdGhQcmVmZXRjaChmb3VuZEtleXMsIGZvdW5kUHJpbWFyeUtleXMsIGZvdW5kVmFs
dWVzKTsKK30KKwordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldChpbnQg
dXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKQoreworICAgIG1fdHJhbnNhY3Rp
b24tPmFkZFBlbmRpbmdFdmVudHMoLXVudXNlZFByZWZldGNoZXMpOworICAgIG1fY3Vyc29yID0g
bV9zYXZlZEN1cnNvcjsKKyAgICBtX3NhdmVkQ3Vyc29yID0gMDsKKworICAgIGlmIChtX2N1cnNv
cikgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVzZWRQcmVmZXRjaGVzOyArK2kpIHsK
KyAgICAgICAgICAgIGJvb2wgb2sgPSBtX2N1cnNvci0+Y29udGludWVGdW5jdGlvbigpOworICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAgICAgICB9CisgICAgfQorfQorCiB2
b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSgpCiB7CiAgICAgaWYgKG1fY3Vyc29yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4IGVj
NTg1MjA3ODI3YTJkMjJhM2RlMmNhN2E4NmUzZGViYjNjNzYzNjQuLjZjNmMzZDEwYjkyNzhmMDcz
YTQ0MjUzNTg2MzE0YzQ3NjZiNzgwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbXBsLmgKQEAgLTYxLDE0ICs2MSwxOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBj
b250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChp
bnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKTsKICAgICB2b2lkIGNsb3Nl
KCk7CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcml2YXRlOgogICAgIElEQkN1cnNvckJhY2tlbmRJbXBs
KFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+LCBJREJDdXJzb3I6OkRpcmVjdGlv
biwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICBzdGF0aWMgdm9pZCBjb250aW51ZUZ1bmN0
aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCQ3Vyc29y
QmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
Pik7CisgICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiwgaW50LCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiBtX2N1cnNvcjsKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IG1fc2F2
ZWRDdXJzb3I7CiAgICAgSURCQ3Vyc29yOjpEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgQ3Vy
c29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gbV90cmFuc2FjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggM2Y2ZDlmZDkwNmE2MjkzMjhlZWI3MjRk
N2UyYWMxYTc1NWI1Y2NjZC4uYjU3YmI1ODY4ZWUxNmI4OTdkYjc3ZDgxZDA1Y2NiZjZkYjA3NmMw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTYxLDYgKzYxLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVu
Y3Rpb24oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBF
eGNlcHRpb25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hS
ZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCkgPSAwOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmgKaW5kZXggOTFjOTI1NzQ2
NTE5OTc0NmQwNjVlMGViZTE1ZWFkNjVhNDExZGFkNi4uNzA2MDM2MTM4MmUyNTJiM2YzMmMyNjEw
ZjdkNDg3ZDEzMGRhZjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJL
ZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5oCkBAIC00Myw2ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGlkYktleShuZXcgSURC
S2V5KCkpOwogICAgICAgICBpZGJLZXktPm1fdHlwZSA9IEludmFsaWRUeXBlOworICAgICAgICBp
ZGJLZXktPm1fc2l6ZUVzdGltYXRlID0gMDsKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNl
KCk7CiAgICAgfQogCkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPElE
QktleT4gaWRiS2V5KG5ldyBJREJLZXkoKSk7CiAgICAgICAgIGlkYktleS0+bV90eXBlID0gTnVt
YmVyVHlwZTsKICAgICAgICAgaWRiS2V5LT5tX251bWJlciA9IG51bWJlcjsKKyAgICAgICAgaWRi
S2V5LT5tX3NpemVFc3RpbWF0ZSA9IHNpemVvZihkb3VibGUpOwogICAgICAgICByZXR1cm4gaWRi
S2V5LnJlbGVhc2UoKTsKICAgICB9CiAKQEAgLTU5LDYgKzYxLDcgQEAgcHVibGljOgogICAgICAg
ICBSZWZQdHI8SURCS2V5PiBpZGJLZXkobmV3IElEQktleSgpKTsKICAgICAgICAgaWRiS2V5LT5t
X3R5cGUgPSBTdHJpbmdUeXBlOwogICAgICAgICBpZGJLZXktPm1fc3RyaW5nID0gc3RyaW5nOwor
ICAgICAgICBpZGJLZXktPm1fc2l6ZUVzdGltYXRlID0gc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9m
KFVDaGFyKTsKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC02
Nyw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5KG5ldyBJ
REJLZXkoKSk7CiAgICAgICAgIGlkYktleS0+bV90eXBlID0gRGF0ZVR5cGU7CiAgICAgICAgIGlk
YktleS0+bV9kYXRlID0gZGF0ZTsKKyAgICAgICAgaWRiS2V5LT5tX3NpemVFc3RpbWF0ZSA9IHNp
emVvZihkb3VibGUpOwogICAgICAgICByZXR1cm4gaWRiS2V5LnJlbGVhc2UoKTsKICAgICB9CiAK
QEAgLTc1LDYgKzc5LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5
KG5ldyBJREJLZXkoKSk7CiAgICAgICAgIGlkYktleS0+bV90eXBlID0gQXJyYXlUeXBlOwogICAg
ICAgICBpZGJLZXktPm1fYXJyYXkgPSBhcnJheTsKKworICAgICAgICBpZGJLZXktPm1fc2l6ZUVz
dGltYXRlID0gMTAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LnNpemUo
KTsgKytpKQorICAgICAgICAgICAgaWRiS2V5LT5tX3NpemVFc3RpbWF0ZSArPSBhcnJheVtpXS0+
bV9zaXplRXN0aW1hdGU7CisKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CiAgICAg
fQogCkBAIC0xMjEsNiArMTMwLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNMZXNzVGhhbihjb25z
dCBJREJLZXkqIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzRXF1YWwoY29uc3QgSURCS2V5KiBv
dGhlcikgY29uc3Q7CiAKKyAgICBzaXplX3Qgc2l6ZUVzdGltYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplRXN0aW1hdGU7IH0KKwogICAgIHN0YXRpYyBpbnQgY29tcGFyZVR5cGVzKFR5cGUgYSwg
VHlwZSBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGIgLSBhOwpAQCAtMTM3LDYgKzE0OCw4IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc3RyaW5nOwogICAgIGRvdWJsZSBtX2RhdGU7CiAgICAg
ZG91YmxlIG1fbnVtYmVyOworCisgICAgc2l6ZV90IG1fc2l6ZUVzdGltYXRlOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggZWM3NWQwZmMwNmQ5NWRlY2FmYzQ1OWRmN2NhNjA5YWE2NDBjNmQ0Yy4uMGMzMDU4ZDIz
NjlkYWNmZTYzOTI2ZWI2N2IzYmJlNzI4NWUyYWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC05MzksNiArOTM5LDIyIEBA
IHByb3RlY3RlZDoKICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9ucykKICAg
ICB7CiAgICAgfQorCisgICAgQ3Vyc29ySW1wbENvbW1vbihjb25zdCBDdXJzb3JJbXBsQ29tbW9u
KiBvdGhlcikKKyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKG90aGVyLT5tX3RyYW5zYWN0aW9uKQor
ICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+bV9jdXJzb3JPcHRpb25zKQorICAgICAg
ICAsIG1fY3VycmVudEtleShvdGhlci0+bV9jdXJyZW50S2V5KQorICAgIHsKKyAgICAgICAgaWYg
KG90aGVyLT5tX2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gbV90cmFuc2Fj
dGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKKworICAgICAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJh
dG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKG90aGVy
LT5tX2l0ZXJhdG9yLT5rZXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1faXRlcmF0b3It
PmlzVmFsaWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICB2aXJ0
dWFsIH5DdXJzb3JJbXBsQ29tbW9uKCkge30KIAogICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90
cmFuc2FjdGlvbjsKQEAgLTEwNTIsNiArMTA2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JP
cHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9i
amVjdFN0b3JlQ3Vyc29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENv
bW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CkBAIC0xMDY0LDYgKzEwODUsMTIgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCisgICAgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKGNvbnN0IE9iamVjdFN0
b3JlQ3Vyc29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1wbENvbW1vbihvdGhlcikK
KyAgICAgICAgLCBtX2N1cnJlbnRWYWx1ZShvdGhlci0+bV9jdXJyZW50VmFsdWUpCisgICAgewor
ICAgIH0KKwogICAgIFN0cmluZyBtX2N1cnJlbnRWYWx1ZTsKIH07CiAKQEAgLTEwOTksNiArMTEy
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJz
b3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4S2V5Q3Vyc29ySW1wbCh0aGlzKSk7CisgICAg
fQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQpA
QCAtMTExMiw2ICsxMTQ0LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIEluZGV4
S2V5Q3Vyc29ySW1wbChjb25zdCBJbmRleEtleUN1cnNvckltcGwqIG90aGVyKQorICAgICAgICA6
IEN1cnNvckltcGxDb21tb24ob3RoZXIpCisgICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5t
X3ByaW1hcnlLZXkpCisgICAgeworICAgIH0KKwogICAgIFJlZlB0cjxJREJLZXk+IG1fcHJpbWFy
eUtleTsKIH07CiAKQEAgLTExNjIsNiArMTIwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25z
KSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiBjbG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4Q3Vy
c29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZp
cnR1YWwgU3RyaW5nIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KQEAg
LTExNzUsNiArMTIxOCwxNCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICBJbmRleEN1
cnNvckltcGwoY29uc3QgSW5kZXhDdXJzb3JJbXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJ
bXBsQ29tbW9uKG90aGVyKQorICAgICAgICAsIG1fcHJpbWFyeUtleShvdGhlci0+bV9wcmltYXJ5
S2V5KQorICAgICAgICAsIG1fdmFsdWUob3RoZXItPm1fdmFsdWUpCisgICAgICAgICwgbV9wcmlt
YXJ5TGV2ZWxEQktleShvdGhlci0+bV9wcmltYXJ5TGV2ZWxEQktleSkKKyAgICB7CisgICAgfQor
CiAgICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwogICAgIFN0cmluZyBtX3ZhbHVlOwog
ICAgIFZlY3RvcjxjaGFyPiBtX3ByaW1hcnlMZXZlbERCS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5jcHAKaW5kZXggMzA5NmQ3ZmYwZDBkOWFlNDVjNGE2NzM5YjU1YWQ1YTU4N2E5
YTk1MC4uNTViZTM0ZWU2MmIxNjZhZDViMTAyZTlkZmU5NzU0MmZjNzZjM2U2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0zMzcsNiArMzM3LDE0IEBAIGJvb2wgSURC
UmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAg
dGFyZ2V0cy5hcHBlbmQobV90cmFuc2FjdGlvbi0+ZGIoKSk7CiAgICAgfQogCisgICAgUmVmUHRy
PElEQkN1cnNvcj4gY3Vyc29yVG9Ob3RpZnk7CisgICAgaWYgKG1fcmVzdWx0KSB7CisgICAgICAg
IGlmIChtX3Jlc3VsdC0+dHlwZSgpID09IElEQkFueTo6SURCQ3Vyc29yVHlwZSkKKyAgICAgICAg
ICAgIGN1cnNvclRvTm90aWZ5ID0gbV9yZXN1bHQtPmlkYkN1cnNvcigpOworICAgICAgICBlbHNl
IGlmIChtX3Jlc3VsdC0+dHlwZSgpID09IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkK
KyAgICAgICAgICAgIGN1cnNvclRvTm90aWZ5ID0gbV9yZXN1bHQtPmlkYkN1cnNvcldpdGhWYWx1
ZSgpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBk
aXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VS
VChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5ibG9ja2VkRXZlbnQpOwogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURC
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CkBAIC0zNDUs
NiArMzUzLDkgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2Vk
RXZlbnQgJiYgbV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNv
clR5cGUgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5
cGUpCiAgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAorICAgIGlmIChjdXJzb3JU
b05vdGlmeSkKKyAgICAgICAgY3Vyc29yVG9Ob3RpZnktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxi
YWNrKCk7CisKICAgICBpZiAobV90cmFuc2FjdGlvbikgewogICAgICAgICAvLyBJZiBhbiBlcnJv
ciBldmVudCBhbmQgdGhlIGRlZmF1bHQgd2Fzbid0IHByZXZlbnRlZC4uLgogICAgICAgICBpZiAo
ZG9udFByZXZlbnREZWZhdWx0ICYmIGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDE1MzU1M2MxNmNiYzdm
Y2Q2NDMzYWI3MWMzYzM1ZmE3ODUzMGQ0OWYuLmY3YWQxNjlmMWIzZGFiYTFlZmI4ZjdiNDM0Mzc1
OTZmNmZjNWM0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC04NCw2ICs4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhQcmVmZXRjaChWZWN0b3I8UmVmUHRyPElEQktleT4gPiBrZXlzLCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiBwcmltYXJ5S2V5cywgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
ID4gdmFsdWVzKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4g
Q2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KICAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKCk7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwCmluZGV4
IGI0NTI2MDAzMWRjNzQyYWZlMWY3NGI2ZTA5NThjMDE3NTZlMDQ4YTQuLjI0ZmExYzYwNTIxMmQx
ZjJlNzBhZjA1ZmU2OWNiOTM0YjQyMjIwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMTQ3LDYgKzE0NywxMiBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnVucmVnaXN0ZXJPcGVuQ3Vyc29yKElE
QkN1cnNvckJhY2tlbmRJbXBsKiBjdXJzbwogICAgIG1fb3BlbkN1cnNvcnMucmVtb3ZlKGN1cnNv
cik7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50
cyhpbnQgbikKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMgKz0gbjsKKyAgICBBU1NFUlQobV9wZW5k
aW5nRXZlbnRzID49IDApOworfQorCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmRp
ZENvbXBsZXRlVGFza0V2ZW50cygpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZElt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5o
CmluZGV4IDMyMGQyYmM2YjQxNTYxNDVhYjg1ZTk2ZWJiYWJjNmM1OTIxMzMwZDcuLjJmOWMyYmE4
NDEyYTI5ZGI5Zjk2M2NiZWJkMWNlNTZhZWE3M2JkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKElEQlRyYW5zYWN0aW9uQ2Fs
bGJhY2tzKiBjYWxsYmFja3MpIHsgbV9jYWxsYmFja3MgPSBjYWxsYmFja3M7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7CiAgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKik7
CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMoaW50KTsKIAogICAgIHZvaWQgcnVu
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQ0YjU1NjNiZGJiY2Y0N2VhNjFkOThkZjY0ZDQwY2Yw
MThkNTQ2MjAuLjAwM2RiZmRjY2Y1NDI5MmI4MmFhYjJjMzVmMmFkYmNlMGY1MWQ2NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2UuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyopID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5kSW1wbCopID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50cyhpbnQpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgKaW5kZXggZTFhODU2MmNhNjlmNjhlNzFkZTcwZjMzMjRmNzNmNDk2
NzI5MGRiOS4uOWE4YTdkOGU2OTkwNjkzMmYxYmI5NGRjMTAxZjhjZTYwMWIzY2ExZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViSURCQ2FsbGJhY2tzX2gKICNkZWZpbmUgV2ViSURCQ2Fs
bGJhY2tzX2gKIAorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1LDYgKzU2LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChXZWJWZWN0
b3I8V2ViSURCS2V5PiBrZXlzLCBXZWJWZWN0b3I8V2ViSURCS2V5PiBwcmltYXJ5S2V5cywgV2Vi
VmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWVzKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCmluZGV4IDkyZGMxOGI5YTcxMjJl
YzhmZTQ5NDEzZTlmZmFmZTRiM2RlYmZjYjcuLjk2YjE3NjVkODQ0NDMwYjJjYjgzMDZjM2RmMDYy
ZjI3MzY1MTA3YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1
cnNvci5oCkBAIC02Myw3ICs2MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlKGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxi
YWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywgV2ViRXhjZXB0aW9uQ29kZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyosIFdl
YkV4Y2VwdGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBXZWJJREJDYWxs
YmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGlu
dCB1bnVzZWRQcmVmZXRjaGVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpIHsgfSAvLyBPbmx5IHVz
ZWQgaW4gZnJvbnRlbmQuCiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJDdXJzb3IoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCmlu
ZGV4IDI4NWMxZmE3M2YwNTQ4ZGJhYmRiZmM1MDI3MzU3MGY5ODgzZTM3YjMuLjRkNDgwMDExMzJl
ZWFhMGYzMWMwODFmYzcwZGRjZWY4YTQyMmU5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSURCVHJhbnNhY3Rpb24uaApAQCAtNjEsNiArNjEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5k
aW5nRXZlbnRzKGludCkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogcHJvdGVj
dGVkOgogICAgIFdlYklEQlRyYW5zYWN0aW9uKCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMGVlYzE1YjBjYjVkYjFm
YjgxYjEwMjVlNWFjODMwZWViZmM4ODBiZC4uMTljMjE1MGRkNGNmYmRkNjc1YzZkZTI0ODZkYWM5
YTRmMTAyMTM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmNwcApAQCAtOTksNiArOTksMjMgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6
b25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzc1dp
dGhDb250aW51YXRpb24oKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNz
V2l0aFByZWZldGNoKFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+IGtleXMsIFZlY3RvcjxSZWZQdHI8
SURCS2V5PiA+IHByaW1hcnlLZXlzLCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiB2YWx1ZXMpCit7CisgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsKKworICAg
IFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CisgICAgV2ViVmVjdG9yPFdlYklEQktl
eT4gd2ViUHJpbWFyeUtleXMobik7CisgICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gd2ViVmFsdWVzKG4pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kp
IHsKKyAgICAgICAgd2ViS2V5c1tpXSA9IFdlYklEQktleShrZXlzW2ldKTsKKyAgICAgICAgd2Vi
UHJpbWFyeUtleXNbaV0gPSBXZWJJREJLZXkocHJpbWFyeUtleXNbaV0pOworICAgICAgICB3ZWJW
YWx1ZXNbaV0gPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWVzW2ldKTsKKyAgICB9CisK
KyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aFByZWZldGNoKHdlYktleXMsIHdlYlByaW1h
cnlLZXlzLCB3ZWJWYWx1ZXMpOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvbkJsb2Nr
ZWQoKQogewogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDAzNWM4ODhmMjY4YzkxZjUw
ZmZmZWZhODFkYWVhMzBkZTU0MzAxZjAuLmI4NDFjMzQzYmYyZmM2OGZmZWQ1ZDdhYjJlNzQxNmRk
ZjgwMTQyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxi
YWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4p
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVh
dGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4ga2V5cywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJL
ZXk+ID4gcHJpbWFyeUtleXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+IHZhbHVlcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFj
a2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tl
bmRQcm94eS5jcHAKaW5kZXggN2RhYjZhMjhmYTIwZmE4ZGM1MWI2Zjc3YWQyNTBmZmI3YzA1Zjdh
NC4uN2Q0NmU4NGFkMGM0ZDQ2YmYxZjg5M2VhODEzMDA0YzEzYzYwZjM3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCkBA
IC04OSw2ICs4OSwxMSBAQCB2b2lkIElEQkN1cnNvckJhY2tlbmRQcm94eTo6ZGVsZXRlRnVuY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgRQogICAgIG1faWRiQ3Vyc29y
LT5kZWxldGVGdW5jdGlvbihuZXcgV2ViSURCQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7
CiB9CiAKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZFByb3h5Ojpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxs
YmFjaygpCit7CisgICAgbV9pZGJDdXJzb3ItPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJz
b3JCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJh
Y2tlbmRQcm94eS5oCmluZGV4IGQ3MjUzNjA1MDI5Y2M5MmJmOGEwYTg2MDVkMDQ0M2U4NTU4MWJm
MDIuLmNmZTZkYWY1ZGRlZDc4ZDdlYTVkZjRkOTNlMGZiM2JhMWRkOWFkMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCkBAIC00
OSw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJD
YWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNv
bnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+
LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29u
dGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tz
PiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8g
T25seSB1c2VkIGluIHRoZSBiYWNrZW5kLgorICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0
KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNlZFByZWZldGNoZXMpIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0gLy8gT25seSB1c2VkIGluIHRoZSBiYWNrZW5kLgorICAgIHZpcnR1YWwgdm9p
ZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwogCiBwcml2YXRlOgogICAgIElEQkN1cnNv
ckJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklEQkN1cnNvcj4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgKaW5k
ZXggZWMyZGY5ZDI1Y2IyN2VhZTk5YTNmMzYzN2NkN2ZjNjU2YmRiNTUwZC4uYWZlZjAwODJjZGYx
NjQ1YTc3YzMzMWI3ODA2ZTNiNGFkZTFjZjlmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlvbkJhY2tlbmRQcm94eS5oCkBAIC00OSw2ICs0
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJhY2tzKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1
cnNvcihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyT3BlbkN1cnNvcihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbCopOworICAg
IHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgV2ViSURCVHJhbnNhY3Rpb24qIGdldFdlYklEQlRyYW5zYWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJJREJUcmFuc2FjdGlvbi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCmluZGV4IDVkNjc3NTdmOTM5
Mzc4OGU0ZWU0NWI4YWFhNWE5NjRjZGQyOTJmOWUuLjY2ZWQ3MDljNWM1MjA1OWZjMmVmMTA5MmU1
ZDcyNWE5MGVkMmIyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkN1cnNvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkN1cnNvckltcGwuY3BwCkBAIC04Miw2ICs4MiwxNiBAQCB2b2lkIFdlYklEQkN1cnNvckltcGw6
OmRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25D
bwogICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+ZGVsZXRlRnVuY3Rpb24oSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgZWMpOwogfQogCit2b2lkIFdlYklEQkN1
cnNvckltcGw6OnByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxi
YWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX2lkYkN1cnNv
ckJhY2tlbmQtPnByZWZldGNoQ29udGludWUobnVtYmVyVG9GZXRjaCwgSURCQ2FsbGJhY2tzUHJv
eHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgZWMpOworfQorCit2b2lkIFdlYklEQkN1
cnNvckltcGw6OnByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJl
ZmV0Y2hlcykKK3sKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPnByZWZldGNoUmVzZXQodXNlZFBy
ZWZldGNoZXMsIHVudXNlZFByZWZldGNoZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5oCmluZGV4IGMyMzc5MjA3M2NjZDI0YTRmMzA0
ODYzZWQ1MzM5MjZhZTBkZGQ2YzAuLmQ4MjI2NGUyZGU2ODgzMDI4ZmRkYzJlN2RlNWEyYmU2MWY5
NDQzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNv
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBs
LmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29u
c3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklE
QktleSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYp
OworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBX
ZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25Db2RlJik7CisgICAgdmlydHVhbCB2b2lkIHBy
ZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcyk7CiAK
ICBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRl
cmZhY2U+IG1faWRiQ3Vyc29yQmFja2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117253</attachid>
            <date>2011-11-30 12:48:34 -0800</date>
            <delta_ts>2011-11-30 12:50:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73025-20111130204832.patch</filename>
            <type>text/plain</type>
            <size>32829</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNTAxZWI2YmE3OGE4MDhkNzc4MjIzZjZmNmU1YTU4Nzg5ODNhYWFkLi5m
OTI1YWM1Mjc2ZGVhNTkwNjI2NDlhMzdjODYwZDM1YjliNTcxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjQgQEAKKzIwMTEtMTEtMjkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbmRleGVkREI6IEN1cnNvciBwcmUtZmV0Y2hpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIGRv
ZXNuJ3QgY2hhbmdlIGFueSBzZW1hbnRpY3MuCisgICAgICAgIEFjdHVhbCBwcmUtZmV0Y2hpbmcg
d2lsbCBub3QgaGFwcGVuIGluIER1bXBSZW5kZXJUcmVlLgorICAgICAgICBDaHJvbWl1bSB3aWxs
IHJlcXVlc3QgcHJlLWZldGNoaW5nIGFuZCBoYXZlIHRlc3RzIGZvciBpdC4KKworICAgICAgICAq
IHN0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogc3RvcmFnZS9JREJDYWxsYmFj
a3MuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJREJDdXJzb3I6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vy
c29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjayk6CisgICAgICAgICAgQWRkcyBhIGNhbGxi
YWNrIHRoYXQgaXMgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgb25zdWNjZXNzIGhhbmRsZXIgaGFzCisg
ICAgICAgICAgZXhlY3V0ZWQgb24gYSBjdXJzb3IuIFRoaXMgYWxsb3dzIHRoZSBjdXJzb3IgdG8g
c2VlIGlmIGEgbmV3IGNhbGwKKyAgICAgICAgICB0byBjb250aW51ZSgpIHdhcyBtYWRlIGluIHRo
ZSBvbnN1Y2Nlc3MgaGFuZGxlci4KKyAgICAgICAgKiBzdG9yYWdlL0lEQkN1cnNvci5oOgorICAg
ICAgICAqIHN0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbCk6
CisgICAgICAgICAgVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkb2VzIGFjdHVhbCBwcmUtZmV0
Y2hpbmcuIFdoZW4gY2FsbGVkLAorICAgICAgICAgIGl0IHdpbGwgYXR0ZW1wdCB0byBzdGVwIHRo
ZSBjdXJzb3IgdXAgdG8gbiBzdGVwcyBhbmQgc2VuZCB0aGUKKyAgICAgICAgICByZXN1bHRzIGJh
Y2sgdmlhIHRoZSBuZXcgb25TdWNjZXNzV2l0aFByZWZldGNoKCkgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAg
ICAgVGhpcyByZXNldHMgdGhlIGN1cnNvciB0byB0aGUgcG9zaXRpb24gaXQgd2FzIGF0IGJlZm9y
ZSB0aGUgbGFzdAorICAgICAgICAgIHByZWZldGNoIGNhbGwuCisgICAgICAgICogc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2Vu
ZEltcGw6OnBvc3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKToKKyAgICAgICAgKiBzdG9yYWdlL0lE
QkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQktleS5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpjcmVhdGVJbnZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQktleTo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3Jl
YXRlU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6Y3JlYXRlRGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJLZXk6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QktleTo6c2l6ZUVzdGltYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNraW5n
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6Q3Vyc29ySW1wbENv
bW1vbjo6Q3Vyc29ySW1wbENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpPYmplY3RTdG9yZUN1cnNvckltcGw6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnNv
ck9wdGlvbnM6Ok9iamVjdFN0b3JlQ3Vyc29ySW1wbDo6T2JqZWN0U3RvcmVDdXJzb3JJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cnNvck9wdGlvbnM6OkluZGV4S2V5Q3Vyc29ySW1wbDo6Y2xv
bmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6SW5kZXhLZXlDdXJzb3JJbXBs
OjpJbmRleEtleUN1cnNvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yT3B0aW9uczo6
SW5kZXhDdXJzb3JJbXBsOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JPcHRpb25z
OjpJbmRleEN1cnNvckltcGw6OkluZGV4Q3Vyc29ySW1wbCk6CisgICAgICAgICogc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmRpc3BhdGNoRXZl
bnQpOgorICAgICAgICAgIFVwZGF0ZSBkaXNwYXRjaEV2ZW50KCkgdG8gY2FsbCB0aGUgcG9zdFN1
Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKQorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWRkUGVuZGluZ0V2ZW50cyk6Cisg
ICAgICAgICAgQWxsb3cgZm9yIGFkZGluZyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGV4dHJhIHBl
bmRpbmcgZXZlbnRzLgorICAgICAgICAgIFdoZW4gYSBjdXJzb3IgcHJlLWZldGNoZXMgbiBlbGVt
ZW50cywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZAorICAgICAgICAgIGV4cGVjdCB0byBzZWUgbiBl
eHRyYSBvbnN1Y2Nlc3MgY2FsbHMuCisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UuaDoKKwogMjAxMS0xMS0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZG8gbm90IHJlcG9ydCB3b3JrZXItcmVsYXRl
ZCBldmVudHMgdW5sZXNzIGluc3BlY3RvciBhZ2VudCBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCBkNTkyZWRhZjk2MDY0YTVjMGM0NGYzZjg3ZDJjNzJmMjg2OTdmMmY2
Li4zZDJlMGU4MTI3YTYzNzg3MGNkNGRiNDgwN2ZiMGQ2OTYzNWU0ZGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDExLTExLTI5ICBIYW5zIFdlbm5ib3Jn
ICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBDdXJzb3IgcHJlLWZl
dGNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzAyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBwbHVtYmluZyBmb3IgbmV3IHByZS1mZXRjaGluZyByZWxhdGVkIGZ1bmN0aW9ucy4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJJREJDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURC
Q2FsbGJhY2tzOjpvblN1Y2Nlc3NXaXRoUHJlZmV0Y2gpOgorICAgICAgICAqIHB1YmxpYy9XZWJJ
REJDdXJzb3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hDb250aW51ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvcjo6cHJlZmV0Y2hSZXNldCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklEQkN1cnNvcjo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAg
ICAqIHB1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJU
cmFuc2FjdGlvbjo6YWRkUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNr
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2Vz
c1dpdGhQcmVmZXRjaCk6CisgICAgICAgICogc3JjL0lEQkNhbGxiYWNrc1Byb3h5Lmg6CisgICAg
ICAgICogc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OklE
QkN1cnNvckJhY2tlbmRQcm94eTo6cG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2spOgorICAgICAg
ICAqIHNyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCQ3Vy
c29yQmFja2VuZFByb3h5OjpwcmVmZXRjaENvbnRpbnVlKToKKyAgICAgICAgKFdlYktpdDo6SURC
Q3Vyc29yQmFja2VuZFByb3h5OjpwcmVmZXRjaFJlc2V0KToKKyAgICAgICAgKiBzcmMvSURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6SURCVHJhbnNhY3Rpb25C
YWNrZW5kUHJveHk6OmFkZFBlbmRpbmdFdmVudHMpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJz
b3JJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCQ3Vyc29ySW1wbDo6cHJlZmV0Y2hD
b250aW51ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkN1cnNvckltcGw6OnByZWZldGNoUmVz
ZXQpOgorICAgICAgICAqIHNyYy9XZWJJREJDdXJzb3JJbXBsLmg6CisKIDIwMTEtMTEtMzAgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGRvIG5vdCByZXBvcnQgd29ya2VyLXJlbGF0ZWQgZXZlbnRzIHVubGVzcyBpbnNwZWN0b3Ig
YWdlbnQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IDZiMGEwNDBmOWZjNGQyYjg3MGQ0ZmFjNGFmNGM0NmFhMGYwMzQwNWMuLjgwYzczZjY2
N2I0MjY5ZDhiOTk3MjgyMjc5OTUzMDA0YjFiZTYxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCYWNraW5nU3RvcmUuaApAQCAtODgsNiArODgsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFz
cyBDdXJzb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxDdXJzb3I+IHsKICAgICBwdWJsaWM6CisgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDdXJzb3I+IGNsb25lKCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY29udGludWVGdW5jdGlvbihjb25zdCBJREJLZXkqID0gMCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXkoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDYWxsYmFja3MuaAppbmRleCA2ODE1OWM1MWRjMTBlYzEzMGE0ZTRmN2E2YjkxYzZmYzlhZTli
YjEzLi43ZGVlNTUwMGY0MGI2ZTY0MzQyNjRkOTkzN2JkMWFkOTUyNGQyZTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJ
bnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aENvbnRpbnVhdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZl
dGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JiB2YWx1ZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2Vk
KCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJz
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuY3BwCmluZGV4IGVkYzZl
ODNlYmU5OTVlMTk5OWQ2ZmIwN2MyY2FlMGQ1ZmY0ODliZmQuLjE2NmMyZGQ2ZDNkMDllNjRlYTMx
ZDcwZjYwMWFlNDYwNTk5ZGMxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQ3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5jcHAK
QEAgLTEwNiw4ICsxMDYsOCBAQCB2b2lkIElEQkN1cnNvcjo6Y29udGludWVGdW5jdGlvbihQYXNz
UmVmUHRyPElEQktleT4ga2V5LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBGSVhNRTogV2Un
cmUgbm90IHVzaW5nIHRoZSBjb250ZXh0IGZyb20gd2hlbiBjb250aW51ZSB3YXMgY2FsbGVkLCB3
aGljaCBtZWFucyB0aGUgY2FsbGJhY2sKICAgICAvLyAgICAgICAgd2lsbCBiZSBvbiB0aGUgb3Jp
Z2luYWwgY29udGV4dCBvcGVuQ3Vyc29yIHdhcyBjYWxsZWQgb24uIElzIHRoaXMgcmlnaHQ/CiAg
ICAgaWYgKG1fcmVxdWVzdC0+cmVzZXRSZWFkeVN0YXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKSB7
Ci0gICAgICAgIG1fYmFja2VuZC0+Y29udGludWVGdW5jdGlvbihrZXksIG1fcmVxdWVzdCwgZWMp
OwogICAgICAgICBtX3JlcXVlc3QtPnNldEN1cnNvcih0aGlzKTsKKyAgICAgICAgbV9iYWNrZW5k
LT5jb250aW51ZUZ1bmN0aW9uKGtleSwgbV9yZXF1ZXN0LCBlYyk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKIH0KQEAgLTEy
Myw2ICsxMjMsMTEgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKICAgICByZXR1cm4gcmVxdWVz
dC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yOjpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxs
YmFjaygpCit7CisgICAgbV9iYWNrZW5kLT5wb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvci5oCmluZGV4IDc5OTA4NDQxMTMyMGJl
ZGRmNDlkMGViYWVhMmUxMTk5YTEzZTY3YjEuLmJhNDlkODI3Y2Q0MDViMzljMmI5YmM1ZjZiOTdj
MmRhNTUyZDMwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3IuaApAQCAtNzAsNiArNzAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5
PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZv
aWQgcG9zdFN1Y2Nlc3NIYW5kbGVyQ2FsbGJhY2soKTsKKwogcHJvdGVjdGVkOgogICAgIElEQkN1
cnNvcihQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+LCBJREJSZXF1ZXN0Kiwg
SURCQW55KiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggZDE2OThkMGZmYTA4MGUzMzM1
N2YxZjY0NWVkNDJmMjYzNDU3YjM2MS4uMTA4N2Q5MTRjYzY1NzM2Yjg3ODI5YjljNmEyOTEwNmM0
ZmFjNmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNr
ZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5k
SW1wbC5jcHAKQEAgLTkwLDEwICs5MCw4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OnVw
ZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSCiAKIHZv
aWQgSURCQ3Vyc29yQmFja2VuZEltcGw6OmNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJL
ZXk+IHBycEtleSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3Ig
PSB0aGlzOwogICAgIFJlZlB0cjxJREJLZXk+IGtleSA9IHBycEtleTsKLSAgICBSZWZQdHI8SURC
Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7Ci0gICAgaWYgKCFtX3RyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1w
bDo6Y29udGludWVGdW5jdGlvbkludGVybmFsLCBjdXJzb3IsIGtleSwgY2FsbGJhY2tzKSkpCisg
ICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJDdXJzb3JCYWNrZW5kSW1wbDo6Y29udGludWVGdW5jdGlvbkludGVybmFsLCB0aGlzLCBrZXks
IHBycENhbGxiYWNrcykpKQogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpOT1Rf
QUxMT1dFRF9FUlI7CiB9CiAKQEAgLTEyMyw2ICsxMjEsNjcgQEAgdm9pZCBJREJDdXJzb3JCYWNr
ZW5kSW1wbDo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywKICAgICBtX29iamVjdFN0b3JlLT5kZWxldGVGdW5jdGlvbihtX2N1cnNvci0+cHJpbWFy
eUtleSgpLCBwcnBDYWxsYmFja3MsIG1fdHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKIH0KIAordm9p
ZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZShpbnQgbnVtYmVyVG9GZXRj
aCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsLCB0
aGlzLCBudW1iZXJUb0ZldGNoLCBwcnBDYWxsYmFja3MpKSkKKyAgICAgICAgZWMgPSBJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6Tk9UX0FMTE9XRURfRVJSOworfQorCit2b2lkIElEQkN1cnNvckJhY2tl
bmRJbXBsOjpwcmVmZXRjaENvbnRpbnVlSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+IHBycEN1cnNvciwgaW50IG51bWJlclRv
RmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCit7CisgICAgUmVmUHRy
PElEQkN1cnNvckJhY2tlbmRJbXBsPiBjdXJzb3IgPSBwcnBDdXJzb3I7CisKKyAgICBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiBmb3VuZEtleXM7CisgICAgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4g
Zm91bmRQcmltYXJ5S2V5czsKKyAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gPiBmb3VuZFZhbHVlczsKKworICAgIGlmIChjdXJzb3ItPm1fY3Vyc29yKQorICAgICAgICBj
dXJzb3ItPm1fc2F2ZWRDdXJzb3IgPSBjdXJzb3ItPm1fY3Vyc29yLT5jbG9uZSgpOworCisgICAg
Y29uc3Qgc2l6ZV90IGtNYXhTaXplRXN0aW1hdGUgPSAxMCAqIDEwMjQgKiAxMDI0OworICAgIHNp
emVfdCBzaXplRXN0aW1hdGUgPSAwOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJU
b0ZldGNoOyArK2kpIHsKKyAgICAgICAgaWYgKCFjdXJzb3ItPm1fY3Vyc29yIHx8ICFjdXJzb3It
Pm1fY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKDApKSB7CisgICAgICAgICAgICBjdXJzb3ItPm1f
Y3Vyc29yID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZm91
bmRLZXlzLmFwcGVuZChjdXJzb3ItPm1fY3Vyc29yLT5rZXkoKSk7CisgICAgICAgIGZvdW5kUHJp
bWFyeUtleXMuYXBwZW5kKGN1cnNvci0+bV9jdXJzb3ItPnByaW1hcnlLZXkoKSk7CisgICAgICAg
IGZvdW5kVmFsdWVzLmFwcGVuZChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJl
KGN1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkpKTsKKworICAgICAgICBzaXplRXN0aW1hdGUgKz0g
Y3Vyc29yLT5tX2N1cnNvci0+a2V5KCktPnNpemVFc3RpbWF0ZSgpOworICAgICAgICBzaXplRXN0
aW1hdGUgKz0gY3Vyc29yLT5tX2N1cnNvci0+cHJpbWFyeUtleSgpLT5zaXplRXN0aW1hdGUoKTsK
KyAgICAgICAgc2l6ZUVzdGltYXRlICs9IGN1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpOworCisgICAgICAgIGlmIChzaXplRXN0aW1hdGUgPiBrTWF4U2l6
ZUVzdGltYXRlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFmb3VuZEtl
eXMuc2l6ZSgpKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6bnVsbFZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3Vy
c29yLT5tX3RyYW5zYWN0aW9uLT5hZGRQZW5kaW5nRXZlbnRzKGZvdW5kS2V5cy5zaXplKCkgLSAx
KTsKKyAgICBjYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhQcmVmZXRjaChmb3VuZEtleXMsIGZvdW5k
UHJpbWFyeUtleXMsIGZvdW5kVmFsdWVzKTsKK30KKwordm9pZCBJREJDdXJzb3JCYWNrZW5kSW1w
bDo6cHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRjaGVz
KQoreworICAgIG1fdHJhbnNhY3Rpb24tPmFkZFBlbmRpbmdFdmVudHMoLXVudXNlZFByZWZldGNo
ZXMpOworICAgIG1fY3Vyc29yID0gbV9zYXZlZEN1cnNvcjsKKyAgICBtX3NhdmVkQ3Vyc29yID0g
MDsKKworICAgIGlmIChtX2N1cnNvcikgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVz
ZWRQcmVmZXRjaGVzOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2wgb2sgPSBtX2N1cnNvci0+Y29u
dGludWVGdW5jdGlvbigpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChvaywgb2spOworICAg
ICAgICB9CisgICAgfQorfQorCiB2b2lkIElEQkN1cnNvckJhY2tlbmRJbXBsOjpjbG9zZSgpCiB7
CiAgICAgaWYgKG1fY3Vyc29yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDdXJzb3JCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JC
YWNrZW5kSW1wbC5oCmluZGV4IGVjNTg1MjA3ODI3YTJkMjJhM2RlMmNhN2E4NmUzZGViYjNjNzYz
NjQuLjA5NjI0MTU3YjRjNzI4NjY2YzE3NTkwNjgzZTJkZjBhNmRmOGMxNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ3Vyc29yQmFja2VuZEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKQEAgLTYxLDE0ICs2MSwx
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29k
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNo
LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRj
aGVzKTsKICAgICB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIHBvc3RTdWNjZXNzSGFu
ZGxlckNhbGxiYWNrKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiBwcml2YXRlOgogICAg
IElEQkN1cnNvckJhY2tlbmRJbXBsKFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+
LCBJREJDdXJzb3I6OkRpcmVjdGlvbiwgQ3Vyc29yVHlwZSwgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKiwgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKik7CiAKICAgICBzdGF0
aWMgdm9pZCBjb250aW51ZUZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4sIFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CisgICAgc3RhdGljIHZvaWQgcHJlZmV0Y2hDb250aW51
ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkN1cnNvckJh
Y2tlbmRJbXBsPiwgaW50IG51bWJlclRvRmV0Y2gsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7
CiAKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpDdXJzb3I+IG1fY3Vyc29yOworICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNvcj4gbV9zYXZlZEN1cnNvcjsKICAgICBJREJDdXJz
b3I6OkRpcmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBDdXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3RyYW5zYWN0aW9u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZh
Y2UuaAppbmRleCAzZjZkOWZkOTA2YTYyOTMyOGVlYjcyNGQ3ZTJhYzFhNzU1YjVjY2NkLi5iNTdi
YjU4NjhlZTE2Yjg5N2RiNzdkODFkMDVjY2JmNmRiMDc2YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNjEsNiArNjEs
OSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29udGludWVGdW5jdGlvbihQYXNzUmVmUHRyPElEQktl
eT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiwg
RXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hDb250aW51ZShp
bnQgbnVtYmVyVG9GZXRjaCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBFeGNlcHRpb25Db2Rl
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hl
cywgaW50IHVudXNlZFByZWZldGNoZXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1Y2Nl
c3NIYW5kbGVyQ2FsbGJhY2soKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQktleS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQktleS5jcHAKaW5kZXggZTkyOTdkNjQwYWZkZWExNjdiOWI3ZDkwODQ2
ZGQwOWQxOGQxMjY2MC4uNTk4Njg2ZTFhMDM5YWRiZmRjYjI0NzdmZmZlMDkxMTUzOGM2ODMxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJLZXkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmNwcApAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIElEQktleTo6SURCS2V5KCkKICAgICA6IG1fdHlwZShJbnZhbGlkVHlwZSkK
KyAgICAsIG1fc2l6ZUVzdGltYXRlKGtPdmVyaGVhZFNpemUpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQktleS5oCmluZGV4IDkxYzkyNTc0NjUxOTk3NDZkMDY1ZTBlYmUxNWVhZDY1YTQxMWRhZDYu
LjQ4YTYxMjM3YmE4ZDY3NzFjODQ2NWY0YTZiNjYzMjYwZTQ3YzUxODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJLZXkuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxJREJL
ZXk+IGlkYktleShuZXcgSURCS2V5KCkpOwogICAgICAgICBpZGJLZXktPm1fdHlwZSA9IE51bWJl
clR5cGU7CiAgICAgICAgIGlkYktleS0+bV9udW1iZXIgPSBudW1iZXI7CisgICAgICAgIGlkYktl
eS0+bV9zaXplRXN0aW1hdGUgKz0gc2l6ZW9mKGRvdWJsZSk7CiAgICAgICAgIHJldHVybiBpZGJL
ZXkucmVsZWFzZSgpOwogICAgIH0KIApAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJlZlB0cjxJREJLZXk+IGlkYktleShuZXcgSURCS2V5KCkpOwogICAgICAgICBpZGJLZXktPm1f
dHlwZSA9IFN0cmluZ1R5cGU7CiAgICAgICAgIGlkYktleS0+bV9zdHJpbmcgPSBzdHJpbmc7Cisg
ICAgICAgIGlkYktleS0+bV9zaXplRXN0aW1hdGUgKz0gc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9m
KFVDaGFyKTsKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CiAgICAgfQogCkBAIC02
Nyw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVmUHRyPElEQktleT4gaWRiS2V5KG5ldyBJ
REJLZXkoKSk7CiAgICAgICAgIGlkYktleS0+bV90eXBlID0gRGF0ZVR5cGU7CiAgICAgICAgIGlk
YktleS0+bV9kYXRlID0gZGF0ZTsKKyAgICAgICAgaWRiS2V5LT5tX3NpemVFc3RpbWF0ZSArPSBz
aXplb2YoZG91YmxlKTsKICAgICAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNlKCk7CiAgICAgfQog
CkBAIC03NSw2ICs3OCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxJREJLZXk+IGlkYktl
eShuZXcgSURCS2V5KCkpOwogICAgICAgICBpZGJLZXktPm1fdHlwZSA9IEFycmF5VHlwZTsKICAg
ICAgICAgaWRiS2V5LT5tX2FycmF5ID0gYXJyYXk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheS5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGlkYktleS0+bV9zaXplRXN0
aW1hdGUgKz0gYXJyYXlbaV0tPm1fc2l6ZUVzdGltYXRlOworCiAgICAgICAgIHJldHVybiBpZGJL
ZXkucmVsZWFzZSgpOwogICAgIH0KIApAQCAtMTIxLDYgKzEyOCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzTGVzc1RoYW4oY29uc3QgSURCS2V5KiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBpc0Vx
dWFsKGNvbnN0IElEQktleSogb3RoZXIpIGNvbnN0OwogCisgICAgc2l6ZV90IHNpemVFc3RpbWF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUVzdGltYXRlOyB9CisKICAgICBzdGF0aWMgaW50IGNv
bXBhcmVUeXBlcyhUeXBlIGEsIFR5cGUgYikKICAgICB7CiAgICAgICAgIHJldHVybiBiIC0gYTsK
QEAgLTEzNyw2ICsxNDYsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAg
ZG91YmxlIG1fZGF0ZTsKICAgICBkb3VibGUgbV9udW1iZXI7CisKKyAgICBzaXplX3QgbV9zaXpl
RXN0aW1hdGU7CisKKyAgICAvLyBWZXJ5IHJvdWdoIGVzdGltYXRlIG9mIG1pbmltdW0ga2V5IHNp
emUgb3ZlcmhlYWQuCisgICAgZW51bSB7IGtPdmVyaGVhZFNpemUgPSAxNiB9OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAK
aW5kZXggZWM3NWQwZmMwNmQ5NWRlY2FmYzQ1OWRmN2NhNjA5YWE2NDBjNmQ0Yy4uMGMzMDU4ZDIz
NjlkYWNmZTYzOTI2ZWI2N2IzYmJlNzI4NWUyYWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCkBAIC05MzksNiArOTM5LDIyIEBA
IHByb3RlY3RlZDoKICAgICAgICAgLCBtX2N1cnNvck9wdGlvbnMoY3Vyc29yT3B0aW9ucykKICAg
ICB7CiAgICAgfQorCisgICAgQ3Vyc29ySW1wbENvbW1vbihjb25zdCBDdXJzb3JJbXBsQ29tbW9u
KiBvdGhlcikKKyAgICAgICAgOiBtX3RyYW5zYWN0aW9uKG90aGVyLT5tX3RyYW5zYWN0aW9uKQor
ICAgICAgICAsIG1fY3Vyc29yT3B0aW9ucyhvdGhlci0+bV9jdXJzb3JPcHRpb25zKQorICAgICAg
ICAsIG1fY3VycmVudEtleShvdGhlci0+bV9jdXJyZW50S2V5KQorICAgIHsKKyAgICAgICAgaWYg
KG90aGVyLT5tX2l0ZXJhdG9yKSB7CisgICAgICAgICAgICBtX2l0ZXJhdG9yID0gbV90cmFuc2Fj
dGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKKworICAgICAgICAgICAgaWYgKG90aGVyLT5tX2l0ZXJh
dG9yLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBtX2l0ZXJhdG9yLT5zZWVrKG90aGVy
LT5tX2l0ZXJhdG9yLT5rZXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG1faXRlcmF0b3It
PmlzVmFsaWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICB2aXJ0
dWFsIH5DdXJzb3JJbXBsQ29tbW9uKCkge30KIAogICAgIExldmVsREJUcmFuc2FjdGlvbiogbV90
cmFuc2FjdGlvbjsKQEAgLTEwNTIsNiArMTA2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JP
cHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9i
amVjdFN0b3JlQ3Vyc29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENv
bW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7
IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlOjpPYmplY3RTdG9yZVJl
Y29yZElkZW50aWZpZXI+IG9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcigpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CkBAIC0xMDY0LDYgKzEwODUsMTIgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCisgICAgT2JqZWN0U3RvcmVDdXJzb3JJbXBsKGNvbnN0IE9iamVjdFN0
b3JlQ3Vyc29ySW1wbCogb3RoZXIpCisgICAgICAgIDogQ3Vyc29ySW1wbENvbW1vbihvdGhlcikK
KyAgICAgICAgLCBtX2N1cnJlbnRWYWx1ZShvdGhlci0+bV9jdXJyZW50VmFsdWUpCisgICAgewor
ICAgIH0KKwogICAgIFN0cmluZyBtX2N1cnJlbnRWYWx1ZTsKIH07CiAKQEAgLTEwOTksNiArMTEy
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW5kZXhLZXlDdXJz
b3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25zKSk7CiAgICAgfQogCisgICAgdmlydHVh
bCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yPiBjbG9uZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4S2V5Q3Vyc29ySW1wbCh0aGlzKSk7CisgICAg
fQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSgpIHsgcmV0dXJuIG1fcHJpbWFyeUtleTsgfQpA
QCAtMTExMiw2ICsxMTQ0LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAorICAgIEluZGV4
S2V5Q3Vyc29ySW1wbChjb25zdCBJbmRleEtleUN1cnNvckltcGwqIG90aGVyKQorICAgICAgICA6
IEN1cnNvckltcGxDb21tb24ob3RoZXIpCisgICAgICAgICwgbV9wcmltYXJ5S2V5KG90aGVyLT5t
X3ByaW1hcnlLZXkpCisgICAgeworICAgIH0KKwogICAgIFJlZlB0cjxJREJLZXk+IG1fcHJpbWFy
eUtleTsKIH07CiAKQEAgLTExNjIsNiArMTIwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW5kZXhDdXJzb3JJbXBsKHRyYW5zYWN0aW9uLCBjdXJzb3JPcHRpb25z
KSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZTo6Q3Vy
c29yPiBjbG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluZGV4Q3Vy
c29ySW1wbCh0aGlzKSk7CisgICAgfQorCiAgICAgLy8gQ3Vyc29ySW1wbENvbW1vbgogICAgIHZp
cnR1YWwgU3RyaW5nIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXkoKSB7IHJldHVybiBtX3ByaW1hcnlLZXk7IH0KQEAg
LTExNzUsNiArMTIxOCwxNCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKKyAgICBJbmRleEN1
cnNvckltcGwoY29uc3QgSW5kZXhDdXJzb3JJbXBsKiBvdGhlcikKKyAgICAgICAgOiBDdXJzb3JJ
bXBsQ29tbW9uKG90aGVyKQorICAgICAgICAsIG1fcHJpbWFyeUtleShvdGhlci0+bV9wcmltYXJ5
S2V5KQorICAgICAgICAsIG1fdmFsdWUob3RoZXItPm1fdmFsdWUpCisgICAgICAgICwgbV9wcmlt
YXJ5TGV2ZWxEQktleShvdGhlci0+bV9wcmltYXJ5TGV2ZWxEQktleSkKKyAgICB7CisgICAgfQor
CiAgICAgUmVmUHRyPElEQktleT4gbV9wcmltYXJ5S2V5OwogICAgIFN0cmluZyBtX3ZhbHVlOwog
ICAgIFZlY3RvcjxjaGFyPiBtX3ByaW1hcnlMZXZlbERCS2V5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCUmVxdWVzdC5jcHAKaW5kZXggMzA5NmQ3ZmYwZDBkOWFlNDVjNGE2NzM5YjU1YWQ1YTU4N2E5
YTk1MC4uNTViZTM0ZWU2MmIxNjZhZDViMTAyZTlkZmU5NzU0MmZjNzZjM2U2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCkBAIC0zMzcsNiArMzM3LDE0IEBAIGJvb2wgSURC
UmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAg
dGFyZ2V0cy5hcHBlbmQobV90cmFuc2FjdGlvbi0+ZGIoKSk7CiAgICAgfQogCisgICAgUmVmUHRy
PElEQkN1cnNvcj4gY3Vyc29yVG9Ob3RpZnk7CisgICAgaWYgKG1fcmVzdWx0KSB7CisgICAgICAg
IGlmIChtX3Jlc3VsdC0+dHlwZSgpID09IElEQkFueTo6SURCQ3Vyc29yVHlwZSkKKyAgICAgICAg
ICAgIGN1cnNvclRvTm90aWZ5ID0gbV9yZXN1bHQtPmlkYkN1cnNvcigpOworICAgICAgICBlbHNl
IGlmIChtX3Jlc3VsdC0+dHlwZSgpID09IElEQkFueTo6SURCQ3Vyc29yV2l0aFZhbHVlVHlwZSkK
KyAgICAgICAgICAgIGN1cnNvclRvTm90aWZ5ID0gbV9yZXN1bHQtPmlkYkN1cnNvcldpdGhWYWx1
ZSgpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBXaGVuIHdlIGFsbG93IGN1c3RvbSBldmVudCBk
aXNwYXRjaGluZywgdGhpcyB3aWxsIHByb2JhYmx5IG5lZWQgdG8gY2hhbmdlLgogICAgIEFTU0VS
VChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQgfHwgZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkuZXJyb3JFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5ibG9ja2VkRXZlbnQpOwogICAgIGJvb2wgZG9udFByZXZlbnREZWZhdWx0ID0gSURC
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaChldmVudC5nZXQoKSwgdGFyZ2V0cyk7CkBAIC0zNDUs
NiArMzUzLDkgQEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQogICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5ibG9ja2Vk
RXZlbnQgJiYgbV9yZXN1bHQgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNv
clR5cGUgJiYgbV9yZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5
cGUpCiAgICAgICAgIG1fcmVxdWVzdEZpbmlzaGVkID0gdHJ1ZTsKIAorICAgIGlmIChjdXJzb3JU
b05vdGlmeSkKKyAgICAgICAgY3Vyc29yVG9Ob3RpZnktPnBvc3RTdWNjZXNzSGFuZGxlckNhbGxi
YWNrKCk7CisKICAgICBpZiAobV90cmFuc2FjdGlvbikgewogICAgICAgICAvLyBJZiBhbiBlcnJv
ciBldmVudCBhbmQgdGhlIGRlZmF1bHQgd2Fzbid0IHByZXZlbnRlZC4uLgogICAgICAgICBpZiAo
ZG9udFByZXZlbnREZWZhdWx0ICYmIGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCmluZGV4IDE1MzU1M2MxNmNiYzdm
Y2Q2NDMzYWI3MWMzYzM1ZmE3ODUzMGQ0OWYuLjhiYzc4NjVhYzcxNTI4ZGMyNTA5MDg4M2JjODU4
NjFmYTI5OGRmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oCkBAIC04NCw2ICs4
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoQ29udGludWF0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgdmFsdWVzKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5vdCByZWFjaCB0aGUgcmVuZGVy
ZXIgc2lkZS4KICAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKCk7CiAKICAgICAvLyBBY3RpdmVE
T01PYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGwuY3BwCmluZGV4IGI0NTI2MDAzMWRjNzQyYWZlMWY3NGI2ZTA5NThjMDE3NTZl
MDQ4YTQuLjI0ZmExYzYwNTIxMmQxZjJlNzBhZjA1ZmU2OWNiOTM0YjQyMjIwMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNw
cApAQCAtMTQ3LDYgKzE0NywxMiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OnVu
cmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRJbXBsKiBjdXJzbwogICAgIG1fb3Bl
bkN1cnNvcnMucmVtb3ZlKGN1cnNvcik7CiB9CiAKK3ZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbDo6YWRkUGVuZGluZ0V2ZW50cyhpbnQgbikKK3sKKyAgICBtX3BlbmRpbmdFdmVudHMgKz0g
bjsKKyAgICBBU1NFUlQobV9wZW5kaW5nRXZlbnRzID49IDApOworfQorCiB2b2lkIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw6OmRpZENvbXBsZXRlVGFza0V2ZW50cygpCiB7CiAgICAgaWYgKG1f
c3RhdGUgPT0gRmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbC5oCmluZGV4IDMyMGQyYmM2YjQxNTYxNDVhYjg1ZTk2ZWJiYWJj
NmM1OTIxMzMwZDcuLjJmOWMyYmE4NDEyYTI5ZGI5Zjk2M2NiZWJkMWNlNTZhZWE3M2JkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1w
bC5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FsbGJh
Y2tzKElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKiBjYWxsYmFja3MpIHsgbV9jYWxsYmFja3MgPSBj
YWxsYmFja3M7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNv
ckJhY2tlbmRJbXBsKik7CiAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPcGVuQ3Vyc29yKElE
QkN1cnNvckJhY2tlbmRJbXBsKik7CisgICAgdmlydHVhbCB2b2lkIGFkZFBlbmRpbmdFdmVudHMo
aW50KTsKIAogICAgIHZvaWQgcnVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCmluZGV4IDQ0YjU1NjNiZGJi
Y2Y0N2VhNjFkOThkZjY0ZDQwY2YwMThkNTQ2MjAuLjAwM2RiZmRjY2Y1NDI5MmI4MmFhYjJjMzVm
MmFkYmNlMGY1MWQ2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaApAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldENhbGxiYWNrcyhJREJUcmFuc2FjdGlvbkNhbGxiYWNrcyop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tl
bmRJbXBsKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihJREJD
dXJzb3JCYWNrZW5kSW1wbCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGVuZGluZ0V2ZW50
cyhpbnQpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgKaW5kZXggZTFhODU2MmNhNjlm
NjhlNzFkZTcwZjMzMjRmNzNmNDk2NzI5MGRiOS4uYzMzMzE4ODlhZTM4NTE1MjNhNzk3N2NmYzYz
MmEzMDcyNDM2ZmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
SURCQ2FsbGJhY2tzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgV2ViSURCQ2FsbGJhY2tz
X2gKICNkZWZpbmUgV2ViSURCQ2FsbGJhY2tzX2gKIAorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTU1LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoY29uc3Qg
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIHsgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCgpIHsg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBXZWJWZWN0b3I8V2ViSURCS2V5PiYga2V5cywgY29uc3QgV2Vi
VmVjdG9yPFdlYklEQktleT4mIHByaW1hcnlLZXlzLCBjb25zdCBXZWJWZWN0b3I8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYgdmFsdWVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYklEQkN1cnNvci5oCmluZGV4IDkyZGMxOGI5YTcxMjJlYzhmZTQ5NDEzZTlmZmFm
ZTRiM2RlYmZjYjcuLjk2YjE3NjVkODQ0NDMwYjJjYjgzMDZjM2RmMDYyZjI3MzY1MTA3YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkN1cnNvci5oCkBAIC02Myw3
ICs2MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKGNvbnN0IFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUm
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjb250
aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2Vw
dGlvbkNvZGUmKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVGdW5jdGlvbihXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgV2ViRXhjZXB0
aW9uQ29kZSYgZWMpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNrcyosIFdlYkV4Y2VwdGlvbkNvZGUm
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVm
ZXRjaENvbnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNl
cHRpb25Db2RlJikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcHJlZmV0Y2hSZXNldChpbnQgdXNlZFByZWZldGNoZXMsIGludCB1bnVzZWRQcmVmZXRj
aGVzKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBw
b3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpIHsgfSAvLyBPbmx5IHVzZWQgaW4gZnJvbnRlbmQu
CiAKIHByb3RlY3RlZDoKICAgICBXZWJJREJDdXJzb3IoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJUcmFuc2FjdGlvbi5oCmluZGV4IDI4NWMxZmE3M2Yw
NTQ4ZGJhYmRiZmM1MDI3MzU3MGY5ODgzZTM3YjMuLjRkNDgwMDExMzJlZWFhMGYzMWMwODFmYzcw
ZGRjZWY4YTQyMmU5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSURCVHJhbnNhY3Rpb24uaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRzKGludCkg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIFdlYklE
QlRyYW5zYWN0aW9uKCkge30KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDYWxsYmFja3NQcm94eS5jcHAKaW5kZXggMGVlYzE1YjBjYjVkYjFmYjgxYjEwMjVlNWFjODMw
ZWViZmM4ODBiZC4uNTgxMDY2ZjMxNjEzODczMTRiYmMyZjI1ZDVmNjBiNzE4MjE4ZjRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcApA
QCAtOTksNiArOTksMjMgQEAgdm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzV2l0aENv
bnRpbnVhdGlvbigpCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24o
KTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzV2l0aFByZWZldGNoKGNv
bnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiA+JiB2YWx1ZXMpCit7CisgICAgY29uc3Qgc2l6ZV90IG4gPSBrZXlzLnNpemUoKTsK
KworICAgIFdlYlZlY3RvcjxXZWJJREJLZXk+IHdlYktleXMobik7CisgICAgV2ViVmVjdG9yPFdl
YklEQktleT4gd2ViUHJpbWFyeUtleXMobik7CisgICAgV2ViVmVjdG9yPFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gd2ViVmFsdWVzKG4pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
OyArK2kpIHsKKyAgICAgICAgd2ViS2V5c1tpXSA9IFdlYklEQktleShrZXlzW2ldKTsKKyAgICAg
ICAgd2ViUHJpbWFyeUtleXNbaV0gPSBXZWJJREJLZXkocHJpbWFyeUtleXNbaV0pOworICAgICAg
ICB3ZWJWYWx1ZXNbaV0gPSBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUodmFsdWVzW2ldKTsKKyAg
ICB9CisKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzV2l0aFByZWZldGNoKHdlYktleXMsIHdl
YlByaW1hcnlLZXlzLCB3ZWJWYWx1ZXMpOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5Ojpv
bkJsb2NrZWQoKQogewogICAgIG1fY2FsbGJhY2tzLT5vbkJsb2NrZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmluZGV4IDAzNWM4ODhmMjY4
YzkxZjUwZmZmZWZhODFkYWVhMzBkZTU0MzAxZjAuLjMzMzM1MWZkYjlhOGE1OTQwMTlhMjJmNzMy
Y2I3NWU0OWQ1N2Y3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aENv
bnRpbnVhdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIHZhbHVlcyk7CiAgICAgdmlydHVh
bCB2b2lkIG9uQmxvY2tlZCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSURCQ3Vyc29yQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5jcHAKaW5kZXggN2RhYjZhMjhmYTIw
ZmE4ZGM1MWI2Zjc3YWQyNTBmZmI3YzA1ZjdhNC4uN2Q0NmU4NGFkMGM0ZDQ2YmYxZjg5M2VhODEz
MDA0YzEzYzYwZjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
Q3Vyc29yQmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJDdXJzb3JCYWNrZW5kUHJveHkuY3BwCkBAIC04OSw2ICs4OSwxMSBAQCB2b2lkIElEQkN1cnNv
ckJhY2tlbmRQcm94eTo6ZGVsZXRlRnVuY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywgRQogICAgIG1faWRiQ3Vyc29yLT5kZWxldGVGdW5jdGlvbihuZXcgV2ViSURCQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MpLCBlYyk7CiB9CiAKK3ZvaWQgSURCQ3Vyc29yQmFja2VuZFBy
b3h5Ojpwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygpCit7CisgICAgbV9pZGJDdXJzb3ItPnBv
c3RTdWNjZXNzSGFuZGxlckNhbGxiYWNrKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJDdXJzb3JCYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkN1cnNvckJhY2tlbmRQcm94eS5oCmluZGV4IGQ3MjUzNjA1MDI5
Y2M5MmJmOGEwYTg2MDVkMDQ0M2U4NTU4MWJmMDIuLmNmZTZkYWY1ZGRlZDc4ZDdlYTVkZjRkOTNl
MGZiM2JhMWRkOWFkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkN1cnNvckJhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkN1cnNvckJhY2tlbmRQcm94eS5oCkBAIC00OSw2ICs0OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlJik7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJREJDYWxsYmFja3M+LCBXZWJDb3JlOjpFeGNlcHRpb25Db2RlJik7Cisg
ICAgdmlydHVhbCB2b2lkIHByZWZldGNoQ29udGludWUoaW50IG51bWJlclRvRmV0Y2gsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SURCQ2FsbGJhY2tzPiwgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSYpIHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gT25seSB1c2VkIGluIHRoZSBiYWNrZW5kLgorICAg
IHZpcnR1YWwgdm9pZCBwcmVmZXRjaFJlc2V0KGludCB1c2VkUHJlZmV0Y2hlcywgaW50IHVudXNl
ZFByZWZldGNoZXMpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gT25seSB1c2VkIGluIHRo
ZSBiYWNrZW5kLgorICAgIHZpcnR1YWwgdm9pZCBwb3N0U3VjY2Vzc0hhbmRsZXJDYWxsYmFjaygp
OwogCiBwcml2YXRlOgogICAgIElEQkN1cnNvckJhY2tlbmRQcm94eShQYXNzT3duUHRyPFdlYklE
QkN1cnNvcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJh
bnNhY3Rpb25CYWNrZW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQlRy
YW5zYWN0aW9uQmFja2VuZFByb3h5LmgKaW5kZXggZWMyZGY5ZDI1Y2IyN2VhZTk5YTNmMzYzN2Nk
N2ZjNjU2YmRiNTUwZC4uYWZlZjAwODJjZGYxNjQ1YTc3YzMzMWI3ODA2ZTNiNGFkZTFjZjlmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJUcmFuc2FjdGlv
bkJhY2tlbmRQcm94eS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2FsbGJhY2tzKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzKik7CiAgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5k
SW1wbCopOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyT3BlbkN1cnNvcihXZWJDb3JlOjpJ
REJDdXJzb3JCYWNrZW5kSW1wbCopOworICAgIHZpcnR1YWwgdm9pZCBhZGRQZW5kaW5nRXZlbnRz
KGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgV2ViSURCVHJhbnNhY3Rpb24q
IGdldFdlYklEQlRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV93ZWJJREJUcmFuc2FjdGlv
bi5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDdXJzb3JJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNv
ckltcGwuY3BwCmluZGV4IDVkNjc3NTdmOTM5Mzc4OGU0ZWU0NWI4YWFhNWE5NjRjZGQyOTJmOWUu
LjY2ZWQ3MDljNWM1MjA1OWZjMmVmMTA5MmU1ZDcyNWE5MGVkMmIyZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuY3BwCkBAIC04Miw2ICs4Miwx
NiBAQCB2b2lkIFdlYklEQkN1cnNvckltcGw6OmRlbGV0ZUZ1bmN0aW9uKFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25DbwogICAgIG1faWRiQ3Vyc29yQmFja2VuZC0+ZGVs
ZXRlRnVuY3Rpb24oSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3Mp
KSwgZWMpOwogfQogCit2b2lkIFdlYklEQkN1cnNvckltcGw6OnByZWZldGNoQ29udGludWUoaW50
IG51bWJlclRvRmV0Y2gsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBXZWJFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBtX2lkYkN1cnNvckJhY2tlbmQtPnByZWZldGNoQ29udGludWUobnVt
YmVyVG9GZXRjaCwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3Mp
KSwgZWMpOworfQorCit2b2lkIFdlYklEQkN1cnNvckltcGw6OnByZWZldGNoUmVzZXQoaW50IHVz
ZWRQcmVmZXRjaGVzLCBpbnQgdW51c2VkUHJlZmV0Y2hlcykKK3sKKyAgICBtX2lkYkN1cnNvckJh
Y2tlbmQtPnByZWZldGNoUmVzZXQodXNlZFByZWZldGNoZXMsIHVudXNlZFByZWZldGNoZXMpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vy
c29ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ3Vyc29ySW1wbC5o
CmluZGV4IGMyMzc5MjA3M2NjZDI0YTRmMzA0ODYzZWQ1MzM5MjZhZTBkZGQ2YzAuLmQ4MjI2NGUy
ZGU2ODgzMDI4ZmRkYzJlN2RlNWEyYmU2MWY5NDQzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklEQkN1cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJREJDdXJzb3JJbXBsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoY29uc3QgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwg
V2ViSURCQ2FsbGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgdm9pZCBj
b250aW51ZUZ1bmN0aW9uKGNvbnN0IFdlYklEQktleSYsIFdlYklEQkNhbGxiYWNrcyosIFdlYkV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRnVuY3Rpb24oV2ViSURCQ2Fs
bGJhY2tzKiwgV2ViRXhjZXB0aW9uQ29kZSYpOworICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaENv
bnRpbnVlKGludCBudW1iZXJUb0ZldGNoLCBXZWJJREJDYWxsYmFja3MqLCBXZWJFeGNlcHRpb25D
b2RlJik7CisgICAgdmlydHVhbCB2b2lkIHByZWZldGNoUmVzZXQoaW50IHVzZWRQcmVmZXRjaGVz
LCBpbnQgdW51c2VkUHJlZmV0Y2hlcyk7CiAKICBwcml2YXRlOgogICAgIFdURjo6UmVmUHRyPFdl
YkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+IG1faWRiQ3Vyc29yQmFja2VuZDsK
</data>
<flag name="review"
          id="116633"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>