<?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>78389</bug_id>
          
          <creation_ts>2012-02-10 14:21:03 -0800</creation_ts>
          <short_desc>wtf/ThreadingWin.cpp doesn&apos;t build for 64-bit Windows</short_desc>
          <delta_ts>2012-02-17 13:55:21 -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>JavaScriptCore</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>0</everconfirmed>
          <reporter name="Kalev Lember">kalevlember</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>hausmann</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>554384</commentid>
    <comment_count>0</comment_count>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-10 14:21:03 -0800</bug_when>
    <thetext>The GTK port build which recently switched from GThread to WTF threading, now fails with:
Source/JavaScriptCore/wtf/ThreadingWin.cpp:220:45: error: cast from &apos;void*&apos; to &apos;unsigned int&apos; loses precision [-fpermissive]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554388</commentid>
    <comment_count>1</comment_count>
      <attachid>126582</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-10 14:22:57 -0800</bug_when>
    <thetext>Created attachment 126582
Patch

The thread proc function passed to _beginthreadex() has unsigned int
return type. However, the actual worker function it calls returns
void*. The current code in wtfThreadEntryPoint() tried to cast the
void* to unsigned int, and then return that value. This however
doesn&apos;t work on 64-bit Windows where a pointer is a 64 bit and an int
is a 32 bit value.

Instead, just return 0 to signal success, and 1 for failure.

This shouldn&apos;t currently affect any client code, because
waitForThreadCompletion implementation in ThreadingWin doesn&apos;t
actually query the return value and does not return anything through
**result.

* wtf/ThreadingWin.cpp:
(WTF::wtfThreadEntryPoint): Avoid casting void* to unsigned int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555220</commentid>
    <comment_count>2</comment_count>
      <attachid>126582</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-13 06:10:23 -0800</bug_when>
    <thetext>Comment on attachment 126582
Patch

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

&gt; Source/JavaScriptCore/wtf/ThreadingWin.cpp:223
&gt; -    return reinterpret_cast&lt;unsigned&gt;(result);
&gt; +    if (!result)
&gt; +        return 1;
&gt; +
&gt; +    return 0;

The main issue I see is that this breaks the waitForThreadCompletion API, which &quot;promises&quot; you a void* returned by the thread function, which will work on all platforms except on Windows (after your change).

I don&apos;t see anyone in WebKit actually relying on thread result, so perhaps the API should be changed at the same time as this fix, to ensure that nobody accidentally introduces code that relies on it and finds it working on their Mac/Linux but see it silently break on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555226</commentid>
    <comment_count>3</comment_count>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-13 06:25:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; The main issue I see is that this breaks the waitForThreadCompletion API, which &quot;promises&quot; you a void* returned by the thread function, which will work on all platforms except on Windows (after your change).

I believe my patch actually doesn&apos;t change the status quo: waitForThreadCompletion implementation in ThreadingWin.cpp as it is completely ignores the &apos;void** result&apos; parameter. So with my change, it doesn&apos;t get any worse or any better -- it still won&apos;t return anything to the caller through &apos;**result&apos;.


Having said that, I agree that current situation where ThreadFunction returns a void* and then the thread&apos;s return value is completely ignored in waitForThreadCompletion on Windows isn&apos;t good. Should I try to come up with a patch to change the signature of ThreadFunction to return unsigned? It would be pretty invasive, touching a lot of files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555257</commentid>
    <comment_count>4</comment_count>
      <attachid>126582</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-13 07:45:25 -0800</bug_when>
    <thetext>Comment on attachment 126582
Patch

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

&gt;&gt; Source/JavaScriptCore/wtf/ThreadingWin.cpp:223
&gt;&gt; +    return 0;
&gt; 
&gt; The main issue I see is that this breaks the waitForThreadCompletion API, which &quot;promises&quot; you a void* returned by the thread function, which will work on all platforms except on Windows (after your change).
&gt; 
&gt; I don&apos;t see anyone in WebKit actually relying on thread result, so perhaps the API should be changed at the same time as this fix, to ensure that nobody accidentally introduces code that relies on it and finds it working on their Mac/Linux but see it silently break on Windows.

I&apos;d actually suggest changing the API first, then making any changes necessary for 64-bit on Windows separately. You have to be a little careful when changing the API, though, because Safari uses some of these WTF thread functions (see bug 25348 comment 12).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555431</commentid>
    <comment_count>5</comment_count>
      <attachid>126582</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-13 11:42:21 -0800</bug_when>
    <thetext>Comment on attachment 126582
Patch

The statements above sound like an r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557101</commentid>
    <comment_count>6</comment_count>
      <attachid>127149</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-15 03:09:30 -0800</bug_when>
    <thetext>Created attachment 127149
Patch v2

This patch implements the WTF threading API change and fixes up all client code. For Safari that uses the internal WTF threading API directly, I&apos;ve also kept ABI-compatibility, so binaries should keep working without a rebuild. (It will still have to cope with the API change.)

Instead of changing the signature of ThreadFunction to return unsigned, I changed it to return void. The return value wasn&apos;t getting used anywhere, so by eliminating it, I could clean up the client code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557120</commentid>
    <comment_count>7</comment_count>
      <attachid>127149</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-15 03:48:09 -0800</bug_when>
    <thetext>Comment on attachment 127149
Patch v2

Attachment 127149 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11525388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557149</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 04:15:28 -0800</bug_when>
    <thetext>Attachment 127149 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
Index mismatch: 0dfd183742a71cb5de5dadc3ae177fc72b63a194 != 9cdcda984def14b8bf8a32b6da6784c8a6ef7b3a
rereading 8567f8d3c2539a28a496edaf1048483e973975c2
	M	LayoutTests/fast/forms/radio-nested-labels.html
	M	LayoutTests/ChangeLog
107798 = 3671b2d23de7ade4cb1d1e78a3f6f7673db6a6c9 already exists! Why are we refetching it?
 at /usr/lib/git-core/git-svn line 5210

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557155</commentid>
    <comment_count>9</comment_count>
      <attachid>127159</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-15 04:35:29 -0800</bug_when>
    <thetext>Created attachment 127159
Patch v3

Oops, patch v2 had an infinite recursion in one of the ABI compat functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557168</commentid>
    <comment_count>10</comment_count>
      <attachid>127165</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-15 04:58:01 -0800</bug_when>
    <thetext>Created attachment 127165
Patch v4

There was another, a year-old createThread() compat function, which my patch apparently broke on MSVC. Fixed.

Is there any way to test patches on the build bots before submitting the patch on bugzilla?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559211</commentid>
    <comment_count>11</comment_count>
      <attachid>127165</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-17 08:25:15 -0800</bug_when>
    <thetext>Comment on attachment 127165
Patch v4

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

Nice! I think this is really close!

&gt; Source/JavaScriptCore/wtf/Threading.cpp:95
&gt; +typedef void* (*CompatFunction)(void* argument);

Maybe ThreadFunctionWithReturnValue would be a better name?

&gt; Source/JavaScriptCore/wtf/Threading.cpp:99
&gt; +struct CompatInvocation {

And this could be ThreadFunctionWithReturnValueInvocation.

&gt; Source/JavaScriptCore/wtf/Threading.cpp:112
&gt; +    OwnPtr&lt;CompatInvocation&gt; invocation = adoptPtr(static_cast&lt;CompatInvocation*&gt;(param));

I&apos;d add a comment here:

// Balanced by .leakPtr() in createThread.

&gt; Source/JavaScriptCore/wtf/Threading.cpp:123
&gt; +    OwnPtr&lt;CompatInvocation&gt; invocation = adoptPtr(new CompatInvocation(entryPoint, data));
&gt; +    ThreadIdentifier id = createThread(compatEntryPoint, invocation.get(), name);
&gt; +
&gt; +    // The thread will take ownership of invocation.
&gt; +    if (!invocation.leakPtr())
&gt; +        return 0;

You can pass the result of .leakPtr() directly to createThread:

// Balanced by adoptPtr() in compatEntryPoint.
return createThread(compatEntryPoint, invocation.leakPtr(), name);

&gt; Source/JavaScriptCore/wtf/Threading.cpp:147
&gt; +    OwnPtr&lt;CompatInvocation&gt; invocation = adoptPtr(new CompatInvocation(entryPoint, data));
&gt; +    ThreadIdentifier id = createThread(compatEntryPoint, invocation.get(), 0);
&gt; +
&gt; +    // The thread will take ownership of invocation.
&gt; +    if (!invocation.leakPtr())
&gt; +        return 0;

Same advice here as above.

&gt; Source/JavaScriptCore/wtf/ThreadingPthreads.cpp:160
&gt; +    OwnPtr&lt;ThreadFunctionInvocation&gt; invocation = adoptPtr(static_cast&lt;ThreadFunctionInvocation*&gt;(param));

I&apos;d add a comment here:

// Balanced by .leakPtr() in createThreadInternal.

&gt; Source/JavaScriptCore/wtf/ThreadingPthreads.cpp:200
&gt; +    // The thread will take ownership of invocation.
&gt; +    if (!invocation.leakPtr())
&gt; +        return 0;

Our normal phrasing is &quot;Balanced by adoptPtr() in wtfThreadEntryPoint.&quot;

This code is essentially checking whether the allocation of ThreadFunctionInvocation succeeded. This isn&apos;t something we typically do in WebKit. I&apos;m not sure how to deal with the WARN_UNUSED_RESULT though. It looks like PingLoader.cpp does this:


// Leak the ping loader, since it will kill itself as soon as it receives a response.
PingLoader* leakedPingLoader = pingLoader.leakPtr();
UNUSED_PARAM(leakedPingLoader);

&gt; Source/JavaScriptCore/wtf/ThreadingPthreads.cpp:216
&gt; +    // The thread will take ownership of invocation.
&gt; +    if (!invocation.leakPtr())
&gt; +        return 0;

Same comments as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559242</commentid>
    <comment_count>12</comment_count>
      <attachid>127602</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-17 09:09:14 -0800</bug_when>
    <thetext>Created attachment 127602
Patch v5

Thank you for the review, Adam!

Applied all the suggested changes. The leakPtr() return value checking was only there to silence the compiler warnings, so I&apos;m very glad there was a cleaner (or at least a more obvious) way to do it.

// Balanced by adoptPtr() in wtfThreadEntryPoint.
ThreadFunctionInvocation* leakedInvocation = invocation.leakPtr();
UNUSED_PARAM(leakedInvocation);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559275</commentid>
    <comment_count>13</comment_count>
      <attachid>127602</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-17 09:57:12 -0800</bug_when>
    <thetext>Comment on attachment 127602
Patch v5

Have you tried running your local WebKit inside Safari to make sure the ABI compatibility is maintained?

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559286</commentid>
    <comment_count>14</comment_count>
      <attachid>127602</attachid>
    <who name="Kalev Lember">kalevlember</who>
    <bug_when>2012-02-17 10:22:24 -0800</bug_when>
    <thetext>Comment on attachment 127602
Patch v5

(In reply to comment #13)
&gt; Have you tried running your local WebKit inside Safari to make sure the ABI compatibility is maintained?

No, I have not. Don&apos;t have a build environment for that; I&apos;m working on webkitgtk here. What I have tested is webkitgtk with both pthreads and win32 threading.

The API change was really Simon&apos;s idea, I originally just wanted to get a 5-line build fix in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559510</commentid>
    <comment_count>15</comment_count>
      <attachid>127602</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 13:55:15 -0800</bug_when>
    <thetext>Comment on attachment 127602
Patch v5

Clearing flags on attachment: 127602

Committed r108119: &lt;http://trac.webkit.org/changeset/108119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559511</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-17 13:55:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126582</attachid>
            <date>2012-02-10 14:22:57 -0800</date>
            <delta_ts>2012-02-13 11:42:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Fix-64-bit-ThreadingWin-build.patch</filename>
            <type>text/plain</type>
            <size>2304</size>
            <attacher name="Kalev Lember">kalevlember</attacher>
            
              <data encoding="base64">RnJvbSBmNTY2OGY1YjRhZWVkYmM0NjU2NjQ4MWE1YTExMzQ2OTQ2MDQxOGMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLYWxldiBMZW1iZXIgPGthbGV2bGVtYmVyQGdtYWlsLmNvbT4K
RGF0ZTogRnJpLCAxMCBGZWIgMjAxMiAyMzo1NToyNyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIEZp
eCA2NC1iaXQgVGhyZWFkaW5nV2luIGJ1aWxkCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICB8ICAgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAgfCAgICA1ICsrKystCiAyIGZp
bGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKaW5kZXggZmY0ZTU2ZS4uNDRiMDY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDItMTAgIEthbGV2IExlbWJlciAgPGthbGV2bGVt
YmVyQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggNjQtYml0IFRocmVhZGluZ1dpbiBidWlsZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzODkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgdGhyZWFk
IHByb2MgZnVuY3Rpb24gcGFzc2VkIHRvIF9iZWdpbnRocmVhZGV4KCkgaGFzIHVuc2lnbmVkIGlu
dAorICAgICAgICByZXR1cm4gdHlwZS4gSG93ZXZlciwgdGhlIGFjdHVhbCB3b3JrZXIgZnVuY3Rp
b24gaXQgY2FsbHMgcmV0dXJucworICAgICAgICB2b2lkKi4gVGhlIGN1cnJlbnQgY29kZSBpbiB3
dGZUaHJlYWRFbnRyeVBvaW50KCkgdHJpZWQgdG8gY2FzdCB0aGUKKyAgICAgICAgdm9pZCogdG8g
dW5zaWduZWQgaW50LCBhbmQgdGhlbiByZXR1cm4gdGhhdCB2YWx1ZS4gVGhpcyBob3dldmVyCisg
ICAgICAgIGRvZXNuJ3Qgd29yayBvbiA2NC1iaXQgV2luZG93cyB3aGVyZSBhIHBvaW50ZXIgaXMg
YSA2NCBiaXQgYW5kIGFuIGludAorICAgICAgICBpcyBhIDMyIGJpdCB2YWx1ZS4KKworICAgICAg
ICBJbnN0ZWFkLCBqdXN0IHJldHVybiAwIHRvIHNpZ25hbCBzdWNjZXNzLCBhbmQgMSBmb3IgZmFp
bHVyZS4KKworICAgICAgICBUaGlzIHNob3VsZG4ndCBjdXJyZW50bHkgYWZmZWN0IGFueSBjbGll
bnQgY29kZSwgYmVjYXVzZQorICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbiBpbXBsZW1l
bnRhdGlvbiBpbiBUaHJlYWRpbmdXaW4gZG9lc24ndAorICAgICAgICBhY3R1YWxseSBxdWVyeSB0
aGUgcmV0dXJuIHZhbHVlIGFuZCBkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcgdGhyb3VnaAorICAg
ICAgICAqKnJlc3VsdC4KKworICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAg
ICAoV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50KTogQXZvaWQgY2FzdGluZyB2b2lkKiB0byB1bnNp
Z25lZCBpbnQuCisKIDIwMTItMDItMTAgIEFyb24gUm9zZW5iZXJnICA8YXJvc2VuYmVyZ0Bsb2dp
dGVjaC5jb20+CiAKICAgICAgICAgW1F0XSBGaXggY29tcGlsZXIgd2FybmluZyBpbiBWaXN1YWwg
U3R1ZGlvIDIwMTAgYWJvdXQgVFIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Z1dpbi5jcHAKaW5kZXggYWMwZjczZi4uNDY0YmMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtMjE3LDcgKzIxNywxMCBAQCBzdGF0aWMgdW5zaWdu
ZWQgX19zdGRjYWxsIHd0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCogcGFyYW0pCiAgICAgVGhyZWFk
U3BlY2lmaWNUaHJlYWRFeGl0KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPihyZXN1bHQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4g
MTsKKworICAgIHJldHVybiAwOwogfQogCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZElu
dGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIq
IHRocmVhZE5hbWUpCi0tIAoxLjcuOQoK
</data>
<flag name="review"
          id="128432"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127149</attachid>
            <date>2012-02-15 03:09:30 -0800</date>
            <delta_ts>2012-02-17 08:12:39 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>wtf_threading_api2.patch</filename>
            <type>text/plain</type>
            <size>52659</size>
            <attacher name="Kalev Lember">kalevlember</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZmJjNDAuLmUxOWJlZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIg
IDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0
ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBh
cmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVk
IGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAg
ICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0
IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0
aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGln
bm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMg
dGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBp
bnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcK
KyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFs
bCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKwor
ICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5k
IHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAg
ICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5
IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9v
bC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmMpOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1RocmVhZDo6c3RvcCk6CisgICAgICAgICogYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmg6CisgICAgICAgIChTYW1wbGluZ1RocmVhZCk6CisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6fkhlYXApOgorICAgICAgICAoSlNDOjpI
ZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmMpOgorICAgICAgICAqIGhlYXAvSGVhcC5o
OgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
VGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVhZFN0YXJ0RnVuYyk6CisgICAgICAgIChKU0M6
Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6On5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKToK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoTWFya1N0YWNrVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAg
ICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQp
OgorICAgICAgICAqIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgIChUaHJlYWRQ
cml2YXRlKToKKyAgICAgICAgKiB3dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmg6IFVwZGF0
ZSB0aGUgc2lnbmF0dXJlIG9mCisgICAgICAgIFRocmVhZEZ1bmN0aW9uLgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6dGhyZWFkRW50
cnlQb2ludCk6IFVwZGF0ZSBmb3IgVGhyZWFkRnVuY3Rpb24gc2lnbmF0dXJlIGNoYW5nZS4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZCk6IENvbXBhdGliaWxpdHkg
ZnVuY3Rpb24gZm9yIFNhZmFyaS4KKyAgICAgICAgKFdURjo6d2FpdEZvclRocmVhZENvbXBsZXRp
b24pOiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IFVwZGF0ZSB0aGUgc2lnbmF0
dXJlIG9mIFRocmVhZEZ1bmN0aW9uIGFuZAorICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bi4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDog
SW1wbGVtZW50IHRoZSBuZXcgQVBJLgorICAgICAgICAoV1RGOjp3dGZUaHJlYWRFbnRyeVBvaW50
KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZEludGVybmFsKToK
KyAgICAgICAgKFdURjo6d2FpdEZvclRocmVhZENvbXBsZXRpb24pOgorICAgICAgICAqIHd0Zi9U
aHJlYWRpbmdXaW4uY3BwOiBJbXBsZW1lbnQgdGhlIG5ldyBBUEkuCisgICAgICAgIChXVEY6Ond0
ZlRocmVhZEVudHJ5UG9pbnQpOgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bik6CisKIDIwMTItMDItMTMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIG9ic29sZXRlICNpZiBmcm9tIFRocmVhZFNwZWNpZmljLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlciBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgppbmRleCA2ZmJjYTdmLi5l
MWUxZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
b3JkZXIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCkBA
IC01OCw2ICs1OCw3IEBAIF9fWk4zV1RGNU11dGV4NnVubG9ja0V2CiBfX1pOM1dURjEwU3RyaW5n
SW1wbDEyc2hhcmVkQnVmZmVyRXYKIF9fWk4zV1RGMTBTdHJpbmdJbXBsOGVuZHNXaXRoRVBTMF9i
CiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCitfX1pOM1dURjEyY3JlYXRl
VGhyZWFkRVBGdlB2RVMwX1BLYwogX19aTjNXVEYyMGNyZWF0ZVRocmVhZEludGVybmFsRVBGUHZT
MF9FUzBfUEtjCiBfX1pOM1dURkwzNWVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxl
RVJLUDE3X29wYXF1ZV9wdGhyZWFkX3QKIF9fWk4zV1RGOUhhc2hUYWJsZUlqU3Q0cGFpcklqUDE3
X29wYXF1ZV9wdGhyZWFkX3RFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzRfRUVOU183SW50SGFz
aElqRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lqRUVOU0FfSVMzX0VFRUVT
Ql9FNnJlaGFzaEVpCkBAIC0xMTUzLDYgKzExNTQsNyBAQCBfX1pOM1dURjEwZmFzdFN0ckR1cEVQ
S2MKIF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNfMTJKU0dsb2JhbERhdGFF
UE4zV1RGMTBTdHJpbmdJbXBsRQogX0pTU3RyaW5nUmV0YWluCiBfX19pbml0aWFsaXplU2NhdmVu
Z2VyX2Jsb2NrX2ludm9rZV8xCitfX1pOM1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25Fagog
X19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQUHYKIF9KU09iamVjdENvcHlQcm9w
ZXJ0eU5hbWVzCiBfX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlOYW1lc0VQTlNfOUV4ZWNT
dGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0aW9uTW9kZUUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXgg
NjMwZjZiYzAuLmJjNjFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xMjIsNiArMTIyLDcgQEAgRVhQT1JUUwogICAgID9j
cmVhdGVUYWJsZUBIYXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/
Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdU
RkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBWFBB
WEBaMFBCREBaCiAgICAgP2NyZWF0ZVR5cGVFcnJvckBKU0NAQFlBUEFWSlNPYmplY3RAMUBQQVZF
eGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXJAV1RGQEBZQUlYWgogICAgID9jcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlc0BXVEZA
QFlBWFBBWElAWgpAQCAtMzYyLDYgKzM2Myw3IEBAIEVYUE9SVFMKICAgICA/dmlzaXRDaGlsZHJl
bkBKU0dsb2JhbFRoaXNASlNDQEBLQVhQQVZKU0NlbGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCiAg
ICAgP3Zpc2l0Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBTQVhQQVZKU0NlbGxAMkBBQVZTbG90Vmlz
aXRvckAyQEBaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4QDJA
QFoKKyAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJQFoKICAgICA/d2FpdEZv
clRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93cml0YWJsZUBQcm9wZXJ0
eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP3dyaXRlQmFycmllckBIYW5kbGVIZWFwQEpT
Q0BAUUFFWFBBVkpTVmFsdWVAMkBBQlYzMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAppbmRleCA2NDMxMzE5Li4wNzdmMDQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcApAQCAtMjEw
LDcgKzIxMCw3IEBAIGJvb2wgU2FtcGxpbmdUaHJlYWQ6OnNfcnVubmluZyA9IGZhbHNlOwogdW5z
aWduZWQgU2FtcGxpbmdUaHJlYWQ6OnNfaGVydHogPSAxMDAwMDsKIFRocmVhZElkZW50aWZpZXIg
U2FtcGxpbmdUaHJlYWQ6OnNfc2FtcGxpbmdUaHJlYWQ7CiAKLXZvaWQqIFNhbXBsaW5nVGhyZWFk
Ojp0aHJlYWRTdGFydEZ1bmModm9pZCopCit2b2lkIFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFy
dEZ1bmModm9pZCopCiB7CiAgICAgd2hpbGUgKHNfcnVubmluZykgewogICAgICAgICBzbGVlcEZv
ck1pY3Jvc2Vjb25kcyhoZXJ0ejJ1cyhzX2hlcnR6KSk7CkBAIC0yMjUsOCArMjI1LDYgQEAgdm9p
ZCogU2FtcGxpbmdUaHJlYWQ6OnRocmVhZFN0YXJ0RnVuYyh2b2lkKikKICAgICAgICAgU2FtcGxp
bmdUb29sOjpzYW1wbGUoKTsKICNlbmRpZgogICAgIH0KLQotICAgIHJldHVybiAwOwogfQogCiAK
QEAgLTI0Myw3ICsyNDEsNyBAQCB2b2lkIFNhbXBsaW5nVGhyZWFkOjpzdG9wKCkKIHsKICAgICBB
U1NFUlQoc19ydW5uaW5nKTsKICAgICBzX3J1bm5pbmcgPSBmYWxzZTsKLSAgICB3YWl0Rm9yVGhy
ZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkLCAwKTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihzX3NhbXBsaW5nVGhyZWFkKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggMzJhNDRhZC4uMjhmZDUyOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAtMjIzLDcg
KzIyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0
aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0xMDAwMCk7CiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHN0b3AoKTsKIAotICAgICAgICBzdGF0aWMgdm9pZCogdGhyZWFk
U3RhcnRGdW5jKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGhyZWFkU3RhcnRGdW5jKHZv
aWQqKTsKICAgICB9OwogCiAgICAgY2xhc3MgU2FtcGxpbmdUb29sIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKaW5kZXggOGUxMGJkNS4uNGUxMzA0NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBIZWFwOjp+SGVhcCgpCiAgICAgICAg
IG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCA9IHRydWU7CiAgICAgICAgIG1fZnJlZUJs
b2NrQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihtX2Jsb2NrRnJlZWluZ1RocmVhZCwgMCk7CisgICAgd2FpdEZvclRocmVhZENvbXBsZXRp
b24obV9ibG9ja0ZyZWVpbmdUaHJlYWQpOwogCiAgICAgLy8gVGhlIGRlc3Ryb3kgZnVuY3Rpb24g
bXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjYWxsZWQsIHNvIGFzc2VydCB0aGlzLgogICAgIEFTU0VS
VCghbV9nbG9iYWxEYXRhKTsKQEAgLTQwNywxMCArNDA3LDkgQEAgdm9pZCBIZWFwOjp3YWl0Rm9y
UmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSkKICAgICB3YWl0Rm9yUmVsYXRpdmVUaW1lV2hp
bGVIb2xkaW5nTG9jayhyZWxhdGl2ZSk7CiB9CiAKLXZvaWQqIEhlYXA6OmJsb2NrRnJlZWluZ1Ro
cmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKQordm9pZCBIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRT
dGFydEZ1bmModm9pZCogaGVhcCkKIHsKICAgICBzdGF0aWNfY2FzdDxIZWFwKj4oaGVhcCktPmJs
b2NrRnJlZWluZ1RocmVhZE1haW4oKTsKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBIZWFwOjpi
bG9ja0ZyZWVpbmdUaHJlYWRNYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCA4
N2EyMGEwLi5iYWMwODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0xODcsNyAr
MTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgd2FpdEZvclJlbGF0aXZlVGlt
ZVdoaWxlSG9sZGluZ0xvY2soZG91YmxlIHJlbGF0aXZlKTsKICAgICAgICAgdm9pZCB3YWl0Rm9y
UmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7CiAgICAgICAgIHZvaWQgYmxvY2tGcmVlaW5n
VGhyZWFkTWFpbigpOwotICAgICAgICBzdGF0aWMgdm9pZCogYmxvY2tGcmVlaW5nVGhyZWFkU3Rh
cnRGdW5jKHZvaWQqIGhlYXApOworICAgICAgICBzdGF0aWMgdm9pZCBibG9ja0ZyZWVpbmdUaHJl
YWRTdGFydEZ1bmModm9pZCogaGVhcCk7CiAgICAgICAgIAogICAgICAgICBjb25zdCBIZWFwU2l6
ZSBtX2hlYXBTaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9taW5CeXRlc1BlckN5Y2xlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5kZXggOWEzMDkyMy4uMTNk
MzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCkBAIC0yMjYs
MTAgKzIyNiw5IEBAIHZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVh
ZE1haW4oKQogICAgIHNsb3RWaXNpdG9yLmRyYWluRnJvbVNoYXJlZChTbG90VmlzaXRvcjo6U2xh
dmVEcmFpbik7CiB9CiAKLXZvaWQqIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Om1hcmtpbmdU
aHJlYWRTdGFydEZ1bmModm9pZCogc2hhcmVkKQordm9pZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhOjptYXJraW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkKIHsKICAgICBzdGF0aWNf
Y2FzdDxNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKj4oc2hhcmVkKS0+bWFya2luZ1RocmVhZE1h
aW4oKTsKLSAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCkBAIC0yNTgsNyArMjU3LDcgQEAgTWFy
a1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6fk1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEoKQogICAg
ICAgICBtX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAgfQogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzLnNpemUoKTsgKytpKQotICAgICAgICB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX21hcmtpbmdUaHJlYWRzW2ldLCAwKTsKKyAgICAgICAg
d2FpdEZvclRocmVhZENvbXBsZXRpb24obV9tYXJraW5nVGhyZWFkc1tpXSk7CiAjZW5kaWYKIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXggNjkyM2NkZC4u
MzAxOTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKQEAgLTE3OCw3
ICsxNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKICAg
ICAgICAgdm9pZCBtYXJraW5nVGhyZWFkTWFpbigpOwotICAgICAgICBzdGF0aWMgdm9pZCogbWFy
a2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKKyAgICAgICAgc3RhdGljIHZvaWQgbWFy
a2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKICNlbmRpZgogCiAgICAgICAgIEpTR2xv
YmFsRGF0YSogbV9nbG9iYWxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggZmQ1YjFmOC4uMmNjMGJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3
YWl0Rm9yRmluaXNoKCkKICAgICAgICAgbV90aHJlYWRDb25kaXRpb24ud2FpdChtX211dGV4KTsK
IH0KIAotdm9pZCogUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d29ya2VyVGhy
ZWFkKHZvaWQqIHRocmVhZERhdGEpCit2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OndvcmtlclRocmVhZCh2b2lkKiB0aHJlYWREYXRhKQogewogICAgIFRocmVhZFByaXZh
dGUqIHNoYXJlZFRocmVhZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGhyZWFkUHJpdmF0ZSo+KHRocmVh
ZERhdGEpOwogICAgIE11dGV4TG9ja2VyIGxvY2soc2hhcmVkVGhyZWFkLT5tX211dGV4KTsKQEAg
LTEzNiw3ICsxMzYsNiBAQCB2b2lkKiBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRl
Ojp3b3JrZXJUaHJlYWQodm9pZCogdGhyZWFkRGF0YSkKIAogICAgICAgICBzaGFyZWRUaHJlYWQt
Pm1fdGhyZWFkQ29uZGl0aW9uLndhaXQoc2hhcmVkVGhyZWFkLT5tX211dGV4KTsKICAgICB9Ci0g
ICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaAppbmRleCAxYzdkNjNjLi42ZGU3MTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVy
aWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMu
aApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFRocmVhZFByaXZhdGUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCog
d29ya2VyVGhyZWFkKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgd29ya2VyVGhyZWFkKHZv
aWQqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJ
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkRnVuY3Rpb25J
bnZvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZEZ1bmN0aW9uSW52
b2NhdGlvbi5oCmluZGV4IGYxZTE0NzIuLjJkODU5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRGdW5jdGlvbkludm9jYXRpb24uaApAQCAtMzEsNyArMzEs
NyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiB2b2lkKiAoKlRocmVhZEZ1bmN0aW9u
KSh2b2lkKiBhcmd1bWVudCk7Cit0eXBlZGVmIHZvaWQgKCpUaHJlYWRGdW5jdGlvbikodm9pZCog
YXJndW1lbnQpOwogCiBzdHJ1Y3QgVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uIHsKICAgICBUaHJl
YWRGdW5jdGlvbkludm9jYXRpb24oVGhyZWFkRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggZDhkYmJhZS4uMWMz
MDlmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBwdWJsaWM6CiAgICAgTXV0ZXggY3JlYXRpb25NdXRleDsKIH07CiAKLXN0YXRpYyB2
b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZvaWQqIGNvbnRleHREYXRhKQorc3RhdGljIHZvaWQgdGhy
ZWFkRW50cnlQb2ludCh2b2lkKiBjb250ZXh0RGF0YSkKIHsKICAgICBOZXdUaHJlYWRDb250ZXh0
KiBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxOZXdUaHJlYWRDb250ZXh0Kj4oY29udGV4dERh
dGEpOwogCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZv
aWQqIGNvbnRleHREYXRhKQogICAgIHZvaWQqIGRhdGEgPSBjb250ZXh0LT5kYXRhOwogICAgIGRl
bGV0ZSBjb250ZXh0OwogCi0gICAgcmV0dXJuIGVudHJ5UG9pbnQoZGF0YSk7CisgICAgZW50cnlQ
b2ludChkYXRhKTsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVu
Y3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogbmFtZSkKQEAgLTk1LDYg
Kzk1LDI1IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVu
dHJ5UG9pbnQsIHZvaWQqIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVRocmVhZChlbnRyeVBv
aW50LCBkYXRhLCAwKTsKIH0KKworCisvLyBGb3IgQUJJIGNvbXBhdGliaWxpdHkgd2l0aCBTYWZh
cmkgb24gTWFjIC8gV2luZG93czogU2FmYXJpIHVzZXMgdGhlIHByaXZhdGUKKy8vIGNyZWF0ZVRo
cmVhZCgpIGFuZCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIGZ1bmN0aW9ucyBkaXJlY3RseSBh
bmQgd2UgbmVlZAorLy8gdG8ga2VlcCB0aGUgb2xkIEFCSSBjb21wYXRpYmlsaXR5IHVudGlsIGl0
J3MgYmVlbiByZWJ1aWx0LgorCitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3Qg
Y2hhciogbmFtZSk7CisKK1RocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKHZvaWQqICgqZW50
cnlQb2ludCkodm9pZCopLCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIHJl
dHVybiBjcmVhdGVUaHJlYWQoZW50cnlQb2ludCwgZGF0YSwgbmFtZSk7Cit9CisKK1dURl9FWFBP
UlRfUFJJVkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwg
dm9pZCoqKTsKKworaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSUQsIHZvaWQqKikKK3sKKyAgICByZXR1cm4gd2FpdEZvclRocmVhZENvbXBsZXRpb24o
dGhyZWFkSUQpOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgKaW5kZXggMWRlZTVkYS4uYjVkNDMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZy5oCkBAIC03OCw3ICs3OCw3IEBACiBuYW1lc3BhY2UgV1RG
IHsKIAogdHlwZWRlZiB1aW50MzJfdCBUaHJlYWRJZGVudGlmaWVyOwotdHlwZWRlZiB2b2lkKiAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7Cit0eXBlZGVmIHZvaWQgKCpUaHJlYWRG
dW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogCiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2Fs
bGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLiBJdCBpcyBzYWZlIHRvIGNhbGwgaXQgcmVwZWF0ZWRs
eS4KIC8vIERhcndpbiBpcyBhbiBleGNlcHRpb24gdG8gdGhpcyBydWxlOiBpdCBpcyBPSyB0byBj
YWxsIGl0IGZyb20gYW55IHRocmVhZCwgdGhlIG9ubHkgCkBAIC05Nyw3ICs5Nyw3IEBAIFRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24sIHZvaWQqLCBj
b25zdCBjaGFyKiB0aHJlYWROCiB2b2lkIGluaXRpYWxpemVDdXJyZW50VGhyZWFkSW50ZXJuYWwo
Y29uc3QgY2hhciogdGhyZWFkTmFtZSk7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBUaHJlYWRJZGVu
dGlmaWVyIGN1cnJlbnRUaHJlYWQoKTsKLVdURl9FWFBPUlRfUFJJVkFURSBpbnQgd2FpdEZvclRo
cmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKK1dURl9FWFBPUlRfUFJJ
VkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllcik7CiBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHlpZWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCmluZGV4IDc2M2VjMmIuLjNkZTVkN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwCkBAIC00
MCw5ICs0MCwxMiBAQAogI2luY2x1ZGUgIkhhc2hNYXAuaCIKICNpbmNsdWRlICJSYW5kb21OdW1i
ZXJTZWVkLmgiCiAjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgiCisjaW5jbHVkZSAiVGhyZWFkRnVu
Y3Rpb25JbnZvY2F0aW9uLmgiCiAjaW5jbHVkZSAiVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFk
cy5oIgogI2luY2x1ZGUgIlRocmVhZFNwZWNpZmljLmgiCiAjaW5jbHVkZSAiVW51c2VkUGFyYW0u
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAKQEAg
LTE1Miw2ICsxNTUsMTQgQEAgdm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRo
cmVhZElkZW50aWZpZXIgaWQpCiAgICAgdGhyZWFkTWFwKCkucmVtb3ZlKGlkKTsKIH0KIAorc3Rh
dGljIHZvaWQqIHd0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCogcGFyYW0pCit7CisgICAgT3duUHRy
PFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKHN0YXRpY19j
YXN0PFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbio+KHBhcmFtKSk7CisgICAgaW52b2NhdGlvbi0+
ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogI2lmIFBM
QVRGT1JNKEJMQUNLQkVSUlkpCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFs
KFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqIHRocmVh
ZE5hbWUpCiB7CkBAIC0xNzEsOCArMTgyLDkgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJl
YWRJbnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KICAg
ICAgICAgICAgIExPR19FUlJPUigicHRocmVhZF9hdHRyX2dldHN0YWNrKCkgZmFpbGVkOiAlZCIs
IGVycm5vKTsKICAgICB9CiAKKyAgICBPd25QdHI8VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uPiBp
bnZvY2F0aW9uID0gYWRvcHRQdHIobmV3IFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbihlbnRyeVBv
aW50LCBkYXRhKSk7CiAgICAgcHRocmVhZF90IHRocmVhZEhhbmRsZTsKLSAgICBpZiAocHRocmVh
ZF9jcmVhdGUoJnRocmVhZEhhbmRsZSwgJmF0dHIsIGVudHJ5UG9pbnQsIGRhdGEpKSB7CisgICAg
aWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRIYW5kbGUsICZhdHRyLCB3dGZUaHJlYWRFbnRyeVBv
aW50LCBpbnZvY2F0aW9uLmdldCgpKSkgewogICAgICAgICBMT0dfRVJST1IoInB0aHJlYWRfY3Jl
YXRlKCkgZmFpbGVkOiAlZCIsIGVycm5vKTsKICAgICAgICAgdGhyZWFkSGFuZGxlID0gMDsKICAg
ICB9CkBAIC0xODMsMTcgKzE5NSwyNCBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZElu
dGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogICAgIGlm
ICghdGhyZWFkSGFuZGxlKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIFRoZSB0aHJlYWQg
d2lsbCB0YWtlIG93bmVyc2hpcCBvZiBpbnZvY2F0aW9uLgorICAgIGludm9jYXRpb24ubGVha1B0
cigpOworCiAgICAgcmV0dXJuIGVzdGFibGlzaElkZW50aWZpZXJGb3JQdGhyZWFkSGFuZGxlKHRo
cmVhZEhhbmRsZSk7CiB9CiAjZWxzZQogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRl
cm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKikK
IHsKKyAgICBPd25QdHI8VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uPiBpbnZvY2F0aW9uID0gYWRv
cHRQdHIobmV3IFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbihlbnRyeVBvaW50LCBkYXRhKSk7CiAg
ICAgcHRocmVhZF90IHRocmVhZEhhbmRsZTsKLSAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVh
ZEhhbmRsZSwgMCwgZW50cnlQb2ludCwgZGF0YSkpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJGYWls
ZWQgdG8gY3JlYXRlIHB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAgd2l0aCBkYXRhICVwIiwgZW50
cnlQb2ludCwgZGF0YSk7CisgICAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRIYW5kbGUsIDAs
IHd0ZlRocmVhZEVudHJ5UG9pbnQsIGludm9jYXRpb24uZ2V0KCkpKSB7CisgICAgICAgIExPR19F
UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwdGhyZWFkIGF0IGVudHJ5IHBvaW50ICVwIHdpdGggZGF0
YSAlcCIsIHd0ZlRocmVhZEVudHJ5UG9pbnQsIGludm9jYXRpb24uZ2V0KCkpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKKyAgICAvLyBUaGUgdGhyZWFkIHdpbGwgdGFrZSBvd25lcnNoaXAg
b2YgaW52b2NhdGlvbi4KKyAgICBpbnZvY2F0aW9uLmxlYWtQdHIoKTsKKwogICAgIHJldHVybiBl
c3RhYmxpc2hJZGVudGlmaWVyRm9yUHRocmVhZEhhbmRsZSh0aHJlYWRIYW5kbGUpOwogfQogI2Vu
ZGlmCkBAIC0yMTcsNyArMjM2LDcgQEAgdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVy
bmFsKGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCiAgICAgVGhyZWFkSWRlbnRpZmllckRhdGE6Omlu
aXRpYWxpemUoaWQpOwogfQogCi1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRl
bnRpZmllciB0aHJlYWRJRCwgdm9pZCoqIHJlc3VsdCkKK2ludCB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKQogewogICAgIEFTU0VSVCh0aHJlYWRJRCk7
CiAKQEAgLTIyNSw3ICsyNDQsNyBAQCBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFk
SWRlbnRpZmllciB0aHJlYWRJRCwgdm9pZCoqIHJlc3VsdCkKICAgICBpZiAoIXB0aHJlYWRIYW5k
bGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pv
aW4ocHRocmVhZEhhbmRsZSwgcmVzdWx0KTsKKyAgICBpbnQgam9pblJlc3VsdCA9IHB0aHJlYWRf
am9pbihwdGhyZWFkSGFuZGxlLCAwKTsKICAgICBpZiAoam9pblJlc3VsdCA9PSBFREVBRExLKQog
ICAgICAgICBMT0dfRVJST1IoIlRocmVhZElkZW50aWZpZXIgJXUgd2FzIGZvdW5kIHRvIGJlIGRl
YWRsb2NrZWQgdHJ5aW5nIHRvIHF1aXQiLCB0aHJlYWRJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCBhYzBmNzNmLi5iYzMyMjYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC0yMTAsMTQgKzIxMCwx
NCBAQCBzdGF0aWMgdm9pZCBjbGVhclRocmVhZEhhbmRsZUZvcklkZW50aWZpZXIoVGhyZWFkSWRl
bnRpZmllciBpZCkKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwgd3RmVGhyZWFkRW50cnlQb2lu
dCh2b2lkKiBwYXJhbSkKIHsKICAgICBPd25QdHI8VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uPiBp
bnZvY2F0aW9uID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9u
Kj4ocGFyYW0pKTsKLSAgICB2b2lkKiByZXN1bHQgPSBpbnZvY2F0aW9uLT5mdW5jdGlvbihpbnZv
Y2F0aW9uLT5kYXRhKTsKKyAgICBpbnZvY2F0aW9uLT5mdW5jdGlvbihpbnZvY2F0aW9uLT5kYXRh
KTsKIAogI2lmICFVU0UoUFRIUkVBRFMpICYmIE9TKFdJTkRPV1MpCiAgICAgLy8gRG8gdGhlIFRM
UyBjbGVhbnVwLgogICAgIFRocmVhZFNwZWNpZmljVGhyZWFkRXhpdCgpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4ocmVzdWx0KTsKKyAgICByZXR1cm4g
MDsKIH0KIAogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRGdW5j
dGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKQpAQCAt
MjUyLDcgKzI1Miw3IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhy
ZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiAgICAgcmV0dXJuIHRocmVh
ZElEOwogfQogCi1pbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciB0
aHJlYWRJRCwgdm9pZCoqIHJlc3VsdCkKK2ludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJl
YWRJZGVudGlmaWVyIHRocmVhZElEKQogewogICAgIEFTU0VSVCh0aHJlYWRJRCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNDk4NDVkMi4uMmQ4ZTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBA
CisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVh
ZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBhcmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhl
CisgICAgICAgICd2b2lkIConIHJldHVybmVkIGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0
aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAgICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRo
ZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8g
YSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhl
IHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGlnbm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4g
dGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlv
biB0bworICAgICAgICByZXR1cm4gdm9pZCBpbnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUg
dGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcKKyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZv
clRocmVhZENvbXBsZXRpb24uIEFsc28sIGFsbCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRh
dGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKworICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0
aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVjdHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNp
bmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5kIHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZl
cnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAgICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0
aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9s
ZCBBQkkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHQ0NvbnRyb2xsZXI6Omdh
cmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcpOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlVGhyZWFkOjpmaWxl
VGhyZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVRocmVhZDo6cnVuTG9vcCk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlVGhyZWFkLmg6CisgICAgICAgIChGaWxlVGhyZWFkKToKKyAg
ICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6Omlj
b25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFi
YXNlOjpzeW5jVGhyZWFkTWFpbkxvb3ApOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5oOgorICAgICAgICAoSWNvbkRhdGFiYXNlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFk
Ojp0aHJlYWRDYWxsYmFjayk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmg6CisgICAgICAgIChTY3JvbGxpbmdUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkYXRhYmFzZUxv
YWRlckVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6d2FpdEZv
ckxvYWRlclRocmVhZENvbXBsZXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kVGhyZWFkRW50cnkp
OgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9sdmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpydW5Mb2FkZXJUaHJlYWQpOgorICAgICAgICAqIHN0b3JhZ2UvRGF0YWJh
c2VUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNl
VGhyZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNl
VGhyZWFkKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmg6CisgICAgICAgIChE
YXRhYmFzZVRocmVhZCk6CisgICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxTdG9yYWdlVGhyZWFkOjp0aHJlYWRF
bnRyeVBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGVybWlu
YXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oOgorICAgICAgICAo
TG9jYWxTdG9yYWdlVGhyZWFkKToKKyAgICAgICAgKiB3ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9E
ZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRy
eSk6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaDoKKyAgICAgICAgKEFz
eW5jQXVkaW9EZWNvZGVyKToKKyAgICAgICAgKiB3ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlOjp1bmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpyZW5kZXJFbnRyeSk6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgIChPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUp
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFk
Lmg6CisgICAgICAgIChXb3JrZXJUaHJlYWQpOgorCiAyMDEyLTAyLTEzICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXSU5dIERlZmluZSBIV05EX01F
U1NBR0UgaWYgbm90IGRvbmUgYWxyZWFkeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAKaW5kZXggNzY1ZTM2My4uY2Y3MGYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0zNiwxMSArMzYsMTAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCogY29s
bGVjdCh2b2lkKikKK3N0YXRpYyB2b2lkIGNvbGxlY3Qodm9pZCopCiB7CiAgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9i
YWxEYXRhKCktPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKLSAgICByZXR1cm4gMDsKIH0KIAog
R0NDb250cm9sbGVyJiBnY0NvbnRyb2xsZXIoKQpAQCAtNzcsNyArNzYsNyBAQCB2b2lkIEdDQ29u
dHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyhib29s
IHdhaXRVbnRpbERvbgogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjcmVhdGVUaHJl
YWQoY29sbGVjdCwgMCwgIldlYkNvcmU6IEdDQ29udHJvbGxlciIpOwogCiAgICAgaWYgKHdhaXRV
bnRpbERvbmUpIHsKLSAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkSUQsIDAp
OworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbih0aHJlYWRJRCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCmluZGV4IDRk
NTU2MzAuLjgyYmM2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcApAQCAt
ODMsMTMgKzgzLDEzIEBAIHZvaWQgRmlsZVRocmVhZDo6dW5zY2hlZHVsZVRhc2tzKGNvbnN0IHZv
aWQqIGluc3RhbmNlKQogICAgIG1fcXVldWUucmVtb3ZlSWYocHJlZGljYXRlKTsKIH0KIAotdm9p
ZCogRmlsZVRocmVhZDo6ZmlsZVRocmVhZFN0YXJ0KHZvaWQqIGFyZykKK3ZvaWQgRmlsZVRocmVh
ZDo6ZmlsZVRocmVhZFN0YXJ0KHZvaWQqIGFyZykKIHsKICAgICBGaWxlVGhyZWFkKiBmaWxlVGhy
ZWFkID0gc3RhdGljX2Nhc3Q8RmlsZVRocmVhZCo+KGFyZyk7Ci0gICAgcmV0dXJuIGZpbGVUaHJl
YWQtPnJ1bkxvb3AoKTsKKyAgICBmaWxlVGhyZWFkLT5ydW5Mb29wKCk7CiB9CiAKLXZvaWQqIEZp
bGVUaHJlYWQ6OnJ1bkxvb3AoKQordm9pZCBGaWxlVGhyZWFkOjpydW5Mb29wKCkKIHsKICAgICB7
CiAgICAgICAgIC8vIFdhaXQgZm9yIEZpbGVUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUgdG8g
aGF2ZSBtX3RocmVhZElECkBAIC0xMTAsOCArMTEwLDYgQEAgdm9pZCogRmlsZVRocmVhZDo6cnVu
TG9vcCgpCiAKICAgICAvLyBDbGVhciB0aGUgc2VsZiByZWZwdHIsIHBvc3NpYmx5IHJlc3VsdGlu
ZyBpbiBkZWxldGlvbgogICAgIG1fc2VsZlJlZiA9IDA7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuaAppbmRl
eCA5YzFkMjY3Li42YzMyNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuaApAQCAt
NzIsOCArNzIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZpbGVUaHJlYWQoKTsKIAotICAg
IHN0YXRpYyB2b2lkKiBmaWxlVGhyZWFkU3RhcnQodm9pZCopOwotICAgIHZvaWQqIHJ1bkxvb3Ao
KTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlVGhyZWFkU3RhcnQodm9pZCopOworICAgIHZvaWQgcnVu
TG9vcCgpOwogCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwogICAgIFJlZlB0cjxG
aWxlVGhyZWFkPiBtX3NlbGZSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAppbmRleCBhODUwN2E5Li41YWU4MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEljb25E
YXRhYmFzZTo6Y2xvc2UoKQogICAgICAgICB3YWtlU3luY1RocmVhZCgpOwogICAgICAgICAKICAg
ICAgICAgLy8gV2FpdCBmb3IgdGhlIHN5bmMgdGhyZWFkIHRvIHRlcm1pbmF0ZQotICAgICAgICB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3N5bmNUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbihtX3N5bmNUaHJlYWQpOwogICAgIH0KIAogICAgIG1fc3luY1RocmVh
ZFJ1bm5pbmcgPSBmYWxzZTsgICAgCkBAIC05NDksMTQgKzk0OSwxNCBAQCBib29sIEljb25EYXRh
YmFzZTo6c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gbV90aHJl
YWRUZXJtaW5hdGlvblJlcXVlc3RlZCB8fCBtX3JlbW92ZUljb25zUmVxdWVzdGVkOwogfQogCi12
b2lkKiBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lkKiB2SWNv
bkRhdGFiYXNlKQordm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFy
dCh2b2lkKiB2SWNvbkRhdGFiYXNlKQogeyAgICAKICAgICBJY29uRGF0YWJhc2UqIGljb25EQiA9
IHN0YXRpY19jYXN0PEljb25EYXRhYmFzZSo+KHZJY29uRGF0YWJhc2UpOwogICAgIAotICAgIHJl
dHVybiBpY29uREItPmljb25EYXRhYmFzZVN5bmNUaHJlYWQoKTsKKyAgICBpY29uREItPmljb25E
YXRhYmFzZVN5bmNUaHJlYWQoKTsKIH0KIAotdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJh
c2VTeW5jVGhyZWFkKCkKK3ZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFk
KCkKIHsKICAgICAvLyBUaGUgY2FsbCB0byBjcmVhdGUgdGhpcyB0aHJlYWQgbWlnaHQgbm90IGNv
bXBsZXRlIGJlZm9yZSB0aGUgdGhyZWFkIGFjdHVhbGx5IHN0YXJ0cywgc28gd2UgbWlnaHQgZmFp
bCB0aGlzIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCkgYmVjYXVzZSB0aGUgcG9pbnRlciAKICAg
ICAvLyB0byBvdXIgdGhyZWFkIHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiBmaWxsZWQgaW4geWV0LgpA
QCAtOTg4LDEyICs5ODgsMTQgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5j
VGhyZWFkKCkKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAg
ICBpZiAoIW1fc3luY0RCLm9wZW4obV9jb21wbGV0ZURhdGFiYXNlUGF0aCkpIHsKICAgICAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gaWNvbiBkYXRhYmFzZSBhdCBwYXRoICVzIC0g
JXMiLCBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoLmFzY2lpKCkuZGF0YSgpLCBtX3N5bmNEQi5sYXN0
RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5
KCkpCi0gICAgICAgIHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICBpZiAoc2hvdWxk
U3RvcFRocmVhZEFjdGl2aXR5KCkpIHsKKyAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBk
b3VibGUgdGltZVN0YW1wID0gY3VycmVudFRpbWUoKTsKQEAgLTEwMDEsOCArMTAwMywxMCBAQCB2
b2lkKiBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmICAgIAog
CiAgICAgcGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbigpOwotICAgIGlmIChzaG91bGRTdG9wVGhy
ZWFkQWN0aXZpdHkoKSkKLSAgICAgICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAg
IGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkgeworICAgICAgICBzeW5jVGhyZWFkTWFp
bkxvb3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGRvdWJsZSBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDI0LDggKzEw
MjgsMTAgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAg
ICAgICAgICAgIGltcG9ydFRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkKLSAgICAgICAgICAg
IHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAgICAgaWYgKHNob3VsZFN0b3BUaHJl
YWRBY3Rpdml0eSgpKSB7CisgICAgICAgICAgICBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAjaWYgIUxPR19ESVNBQkxF
RAogICAgICAgICBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDQxLDggKzEwNDcsMTAg
QEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAgICBMT0co
SWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgU3RhcnRpbmcgaWNvblVSTCBpbXBvcnQiKTsKICAgICBw
ZXJmb3JtVVJMSW1wb3J0KCk7CiAgICAgCi0gICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0
eSgpKQotICAgICAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgaWYgKHNob3Vs
ZFN0b3BUaHJlYWRBY3Rpdml0eSgpKSB7CisgICAgICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIG5ld1N0YW1w
ID0gY3VycmVudFRpbWUoKTsKQEAgLTEwNTAsNyArMTA1OCw3IEBAIHZvaWQqIEljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAjZW5kaWYgCiAKICAgICBMT0coSWNvbkRhdGFi
YXNlLCAiKFRIUkVBRCkgQmVnaW5uaW5nIHN5bmMiKTsKLSAgICByZXR1cm4gc3luY1RocmVhZE1h
aW5Mb29wKCk7CisgICAgc3luY1RocmVhZE1haW5Mb29wKCk7CiB9CiAKIHN0YXRpYyBpbnQgZGF0
YWJhc2VWZXJzaW9uTnVtYmVyKFNRTGl0ZURhdGFiYXNlJiBkYikKQEAgLTEzNDgsNyArMTM1Niw3
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICBjYWxsT25NYWlu
VGhyZWFkKG5vdGlmeVBlbmRpbmdMb2FkRGVjaXNpb25zT25NYWluVGhyZWFkLCB0aGlzKTsKIH0K
IAotdm9pZCogSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQordm9pZCBJY29uRGF0
YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCgpCiB7CiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJF
QUQoKTsKIApAQCAtMTQ2MSw4ICsxNDY5LDYgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpzeW5jVGhy
ZWFkTWFpbkxvb3AoKQogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAg
ICAgICAgIG1fZGlzYWJsZWRTdWRkZW5UZXJtaW5hdGlvbkZvclN5bmNUaHJlYWQgPSBmYWxzZTsK
ICAgICB9Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBJY29uRGF0YWJhc2U6OnJlYWRGcm9t
RGF0YWJhc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRl
eCA3YWIwODQxLi5mNGFiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0
YWJhc2UuaApAQCAtMTgzLDE1ICsxODMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSBjb25zdDsKIAogcHJpdmF0ZTogICAgCi0gICAgc3Rh
dGljIHZvaWQqIGljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lkICopOwotICAgIHZvaWQq
IGljb25EYXRhYmFzZVN5bmNUaHJlYWQoKTsKKyAgICBzdGF0aWMgdm9pZCBpY29uRGF0YWJhc2VT
eW5jVGhyZWFkU3RhcnQodm9pZCAqKTsKKyAgICB2b2lkIGljb25EYXRhYmFzZVN5bmNUaHJlYWQo
KTsKICAgICAKICAgICAvLyBUaGUgZm9sbG93aW5nIGJsb2NrIG9mIG1ldGhvZHMgYXJlIGNhbGxl
ZCBleGNsdXNpdmVseSBieSB0aGUgc3luYyB0aHJlYWQgdG8gbWFuYWdlIGkvbyB0byBhbmQgZnJv
bSB0aGUgZGF0YWJhc2UKICAgICAvLyBFYWNoIG1ldGhvZCBzaG91bGQgcGVyaW9kaWNhbGx5IG1v
bml0b3IgbV90aHJlYWRUZXJtaW5hdGlvblJlcXVlc3RlZCB3aGVuIGl0IG1ha2VzIHNlbnNlIHRv
IHJldHVybiBlYXJseSBvbiBzaHV0ZG93bgogICAgIHZvaWQgcGVyZm9ybU9wZW5Jbml0aWFsaXph
dGlvbigpOwogICAgIGJvb2wgY2hlY2tJbnRlZ3JpdHkoKTsKICAgICB2b2lkIHBlcmZvcm1VUkxJ
bXBvcnQoKTsKLSAgICB2b2lkKiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICB2b2lkIHN5bmNU
aHJlYWRNYWluTG9vcCgpOwogICAgIGJvb2wgcmVhZEZyb21EYXRhYmFzZSgpOwogICAgIGJvb2wg
d3JpdGVUb0RhdGFiYXNlKCk7CiAgICAgdm9pZCBwcnVuZVVucmV0YWluZWRJY29ucygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5k
ZXggZmM1YTQwNS4uYTk1Y2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBAIC03NywxMSArNzcsOSBAQCB2b2lkIFNjcm9sbGlu
Z1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgIH0KIH0KIAotdm9pZCogU2Nyb2xs
aW5nVGhyZWFkOjp0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpCit2b2lkIFNj
cm9sbGluZ1RocmVhZDo6dGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhyZWFkKQogewog
ICAgIHN0YXRpY19jYXN0PFNjcm9sbGluZ1RocmVhZCo+KHNjcm9sbGluZ1RocmVhZCktPnRocmVh
ZEJvZHkoKTsKLQotICAgIHJldHVybiAwOwogfQogCiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhy
ZWFkQm9keSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ro
cmVhZC5oCmluZGV4IDIyNjcxZTQuLmQ4ZGZhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIFNjcm9sbGluZ1RocmVhZCYgc2hhcmVkKCk7CiAKICAgICB2b2lkIGNyZWF0
ZVRocmVhZElmTmVlZGVkKCk7Ci0gICAgc3RhdGljIHZvaWQqIHRocmVhZENhbGxiYWNrKHZvaWQq
IHNjcm9sbGluZ1RocmVhZCk7CisgICAgc3RhdGljIHZvaWQgdGhyZWFkQ2FsbGJhY2sodm9pZCog
c2Nyb2xsaW5nVGhyZWFkKTsKICAgICB2b2lkIHRocmVhZEJvZHkoKTsKICAgICB2b2lkIGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBjYjczNTVh
Li44Zjk2Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hS
VEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTgwLDEzICs4MCwxMSBAQCBIUlRGRGF0YWJhc2VMb2Fk
ZXI6On5IUlRGRGF0YWJhc2VMb2FkZXIoKQogCiAKIC8vIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhl
IGRhdGFiYXNlIGluIHRoaXMgdGhyZWFkLgotc3RhdGljIHZvaWQqIGRhdGFiYXNlTG9hZGVyRW50
cnkodm9pZCogdGhyZWFkRGF0YSkKK3N0YXRpYyB2b2lkIGRhdGFiYXNlTG9hZGVyRW50cnkodm9p
ZCogdGhyZWFkRGF0YSkKIHsKICAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SFJURkRhdGFiYXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7CiAgICAgQVNTRVJU
KGxvYWRlcik7CiAgICAgbG9hZGVyLT5sb2FkKCk7Ci0gICAgCi0gICAgcmV0dXJuIDA7CiB9CiAK
IHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKQEAgLTEyMSw3ICsxMTksNyBAQCB2b2lk
IEhSVEZEYXRhYmFzZUxvYWRlcjo6d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKQogICAg
IAogICAgIC8vIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQg
dHdpY2UgZm9yIHRoZSBzYW1lIHRocmVhZC4KICAgICBpZiAobV9kYXRhYmFzZUxvYWRlclRocmVh
ZCkKLSAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9kYXRhYmFzZUxvYWRlclRocmVh
ZCwgMCk7CisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fZGF0YWJhc2VMb2FkZXJU
aHJlYWQpOwogICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSAwOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCBjNjEx
NDE0Li5jNmFiNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5jcHAKQEAgLTUzLDExICs1MywxMCBAQCBjb25zdCBzaXplX3QgUmVhbHRp
bWVGcmFtZUxpbWl0ID0gODE5MiAgKyA0MDk2OyAvLyB+Mjc4bXNlYyBAIDQ0LjFLSHoKIGNvbnN0
IHNpemVfdCBNaW5GRlRTaXplID0gMjU2OwogY29uc3Qgc2l6ZV90IE1heFJlYWx0aW1lRkZUU2l6
ZSA9IDIwNDg7CiAKLXN0YXRpYyB2b2lkKiBiYWNrZ3JvdW5kVGhyZWFkRW50cnkodm9pZCogdGhy
ZWFkRGF0YSkKK3N0YXRpYyB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWRE
YXRhKQogewogICAgIFJldmVyYkNvbnZvbHZlciogcmV2ZXJiQ29udm9sdmVyID0gc3RhdGljX2Nh
c3Q8UmV2ZXJiQ29udm9sdmVyKj4odGhyZWFkRGF0YSk7CiAgICAgcmV2ZXJiQ29udm9sdmVyLT5i
YWNrZ3JvdW5kVGhyZWFkRW50cnkoKTsKLSAgICByZXR1cm4gMDsKIH0KIAogUmV2ZXJiQ29udm9s
dmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVf
dCByZW5kZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRTaXplLCBzaXplX3QgY29udm9sdmVyUmVu
ZGVyUGhhc2UsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMpCkBAIC0xNDIsNyArMTQxLDcgQEAg
UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9sdmVyKCkKICAgICAgICAgICAgIG1fYmFja2dy
b3VuZFRocmVhZENvbmRpdGlvbi5zaWduYWwoKTsKICAgICAgICAgfQogCi0gICAgICAgIHdhaXRG
b3JUaHJlYWRDb21wbGV0aW9uKG1fYmFja2dyb3VuZFRocmVhZCwgMCk7CisgICAgICAgIHdhaXRG
b3JUaHJlYWRDb21wbGV0aW9uKG1fYmFja2dyb3VuZFRocmVhZCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BD
Ri5jcHAKaW5kZXggYWE5OWRmMy4uMzA4OGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNDIsNyArNDIs
NyBAQCBzdGF0aWMgdm9pZCBlbXB0eVBlcmZvcm0odm9pZCopCiB7CiB9CiAKLXN0YXRpYyB2b2lk
KiBydW5Mb2FkZXJUaHJlYWQodm9pZCopCitzdGF0aWMgdm9pZCBydW5Mb2FkZXJUaHJlYWQodm9p
ZCopCiB7CiAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsK
IApAQCAtNTYsOCArNTYsNiBAQCBzdGF0aWMgdm9pZCogcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQog
ICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKICAgICAgICAgcmVzdWx0ID0gQ0ZSdW5Mb29w
UnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3Vi
bGU+OjptYXgoKSwgdHJ1ZSk7CiAgICAgfSB3aGlsZSAocmVzdWx0ICE9IGtDRlJ1bkxvb3BSdW5T
dG9wcGVkICYmIHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuRmluaXNoZWQpOwotCi0gICAgcmV0dXJu
IDA7CiB9CiAKIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggY2JkZTMyNC4uZDc3MWIxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCBi
b29sIERhdGFiYXNlVGhyZWFkOjp0ZXJtaW5hdGlvblJlcXVlc3RlZChEYXRhYmFzZVRhc2tTeW5j
aHJvbml6ZXIqIHRhc2tTeW5jaHJvbgogICAgIHJldHVybiBtX3F1ZXVlLmtpbGxlZCgpOwogfQog
Ci12b2lkKiBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKiB2RGF0YWJh
c2VUaHJlYWQpCit2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZFN0YXJ0KHZvaWQq
IHZEYXRhYmFzZVRocmVhZCkKIHsKICAgICBEYXRhYmFzZVRocmVhZCogZGJUaHJlYWQgPSBzdGF0
aWNfY2FzdDxEYXRhYmFzZVRocmVhZCo+KHZEYXRhYmFzZVRocmVhZCk7Ci0gICAgcmV0dXJuIGRi
VGhyZWFkLT5kYXRhYmFzZVRocmVhZCgpOworICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVhZCgp
OwogfQogCi12b2lkKiBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQordm9pZCBEYXRh
YmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIHsKICAgICAgICAgLy8gV2FpdCBm
b3IgRGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUuCkBAIC0xMzQsOCArMTM0LDYg
QEAgdm9pZCogRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKIAogICAgIGlmIChjbGVh
bnVwU3luYykgLy8gU29tZW9uZSB3YW50ZWQgdG8ga25vdyB3aGVuIHdlIHdlcmUgZG9uZSBjbGVh
bmluZyB1cC4KICAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKLQotICAgIHJl
dHVybiAwOwogfQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0
YWJhc2UqIGRhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRh
YmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCmlu
ZGV4IGQ0MTBlZGIuLmZhNGZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhy
ZWFkLmgKQEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEYXRhYmFzZVRo
cmVhZCgpOwogCi0gICAgc3RhdGljIHZvaWQqIGRhdGFiYXNlVGhyZWFkU3RhcnQodm9pZCopOwot
ICAgIHZvaWQqIGRhdGFiYXNlVGhyZWFkKCk7CisgICAgc3RhdGljIHZvaWQgZGF0YWJhc2VUaHJl
YWRTdGFydCh2b2lkKik7CisgICAgdm9pZCBkYXRhYmFzZVRocmVhZCgpOwogCiAgICAgTXV0ZXgg
bV90aHJlYWRDcmVhdGlvbk11dGV4OwogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcAppbmRleCBi
YTFiMGZhLi5hOGU0NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2Fs
U3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VUaHJlYWQuY3BwCkBAIC01NiwxOCArNTYsMTYgQEAgYm9vbCBMb2NhbFN0b3JhZ2VUaHJlYWQ6
OnN0YXJ0KCkKICAgICByZXR1cm4gbV90aHJlYWRJRDsKIH0KIAotdm9pZCogTG9jYWxTdG9yYWdl
VGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCogdGhyZWFkKQordm9pZCBMb2Nh
bFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKiB0aHJlYWQpCiB7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PExvY2FsU3RvcmFnZVRocmVhZCo+KHRocmVhZCktPnRo
cmVhZEVudHJ5UG9pbnQoKTsKKyAgICBzdGF0aWNfY2FzdDxMb2NhbFN0b3JhZ2VUaHJlYWQqPih0
aHJlYWQpLT50aHJlYWRFbnRyeVBvaW50KCk7CiB9CiAKLXZvaWQqIExvY2FsU3RvcmFnZVRocmVh
ZDo6dGhyZWFkRW50cnlQb2ludCgpCit2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50
cnlQb2ludCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgd2hpbGUgKE93
blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiB0YXNrID0gbV9xdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQog
ICAgICAgICB0YXNrLT5wZXJmb3JtVGFzaygpOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQg
TG9jYWxTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVRhc2soUGFzc093blB0cjxMb2NhbFN0b3JhZ2VU
YXNrPiB0YXNrKQpAQCAtODUsOSArODMsOCBAQCB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6dGVy
bWluYXRlKCkKICAgICBpZiAoIW1fdGhyZWFkSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZv
aWQqIHJldHVyblZhbHVlOwogICAgIG1fcXVldWUuYXBwZW5kKExvY2FsU3RvcmFnZVRhc2s6OmNy
ZWF0ZVRlcm1pbmF0ZSh0aGlzKSk7Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJl
YWRJRCwgJnJldHVyblZhbHVlKTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVh
ZElEKTsKICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSk7CiAgICAgbV90aHJlYWRJRCA9IDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAppbmRleCA0
NjQ2N2FmLi40MzRmMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2Fs
U3RvcmFnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdl
VGhyZWFkLmgKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBM
b2NhbFN0b3JhZ2VUaHJlYWQoKTsKIAogICAgICAgICAvLyBDYWxsZWQgb24gYmFja2dyb3VuZCB0
aHJlYWQuCi0gICAgICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9p
ZCopOwotICAgICAgICB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KCk7CisgICAgICAgIHN0YXRpYyB2
b2lkIHRocmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKik7CisgICAgICAgIHZvaWQgdGhyZWFk
RW50cnlQb2ludCgpOwogCiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAg
ICAgICAgTWVzc2FnZVF1ZXVlPExvY2FsU3RvcmFnZVRhc2s+IG1fcXVldWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggYzI2ODI0My4uZjAw
YmQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNw
cApAQCAtNDksOCArNDksNyBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVy
KCkKICAgICBtX3F1ZXVlLmtpbGwoKTsKICAgICAKICAgICAvLyBTdG9wIHRocmVhZC4KLSAgICB2
b2lkKiBleGl0Q29kZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElELCAm
ZXhpdENvZGUpOworICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQpOwogICAg
IG1fdGhyZWFkSUQgPSAwOwogfQogCkBAIC02NiwxMiArNjUsMTEgQEAgdm9pZCBBc3luY0F1ZGlv
RGVjb2Rlcjo6ZGVjb2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxl
UmF0ZSwgUGEKIH0KIAogLy8gQXN5bmNocm9ub3VzbHkgZGVjb2RlIGluIHRoaXMgdGhyZWFkLgot
dm9pZCogQXN5bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCit2
b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQogewog
ICAgIEFTU0VSVCh0aHJlYWREYXRhKTsKICAgICBBc3luY0F1ZGlvRGVjb2RlciogZGVjb2RlciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNBdWRpb0RlY29kZXIqPih0aHJlYWREYXRhKTsKICAgICBk
ZWNvZGVyLT5ydW5Mb29wKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgQXN5bmNBdWRpb0Rl
Y29kZXI6OnJ1bkxvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5
bmNBdWRpb0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmgKaW5kZXggZTJmYzRkYy4uY2VkODA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9hdWRpb0J1ZmZlcjsKICAgICB9OwogICAgIAotICAgIHN0
YXRpYyB2b2lkKiB0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKKyAgICBzdGF0aWMgdm9p
ZCB0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKICAgICB2b2lkIHJ1bkxvb3AoKTsKIAog
ICAgIFdURjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXgg
MTk4YTUwMi4uYWViZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQg
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUoKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9yZW5kZXJUaHJlYWQpIHsKLSAgICAgICAgd2FpdEZvclRocmVhZENv
bXBsZXRpb24obV9yZW5kZXJUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxl
dGlvbihtX3JlbmRlclRocmVhZCk7CiAgICAgICAgIG1fcmVuZGVyVGhyZWFkID0gMDsKICAgICB9
CiAKQEAgLTkyLDEzICs5MiwxMSBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
c3RhcnRSZW5kZXJpbmcoKQogfQogCiAvLyBEbyBvZmZsaW5lIHJlbmRlcmluZyBpbiB0aGlzIHRo
cmVhZC4KLXZvaWQqIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyRW50cnkodm9p
ZCogdGhyZWFkRGF0YSkKK3ZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXJF
bnRyeSh2b2lkKiB0aHJlYWREYXRhKQogewogICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZSogZGVzdGluYXRpb25Ob2RlID0gcmVpbnRlcnByZXRfY2FzdDxPZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUqPih0aHJlYWREYXRhKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb25Ob2RlKTsKICAg
ICBkZXN0aW5hdGlvbk5vZGUtPnJlbmRlcigpOwotICAgIAotICAgIHJldHVybiAwOwogfQogCiB2
b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXgg
YzRkNTY3YS4uN2JjYjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBSZW5kZXJpbmcgdGhyZWFkLgogICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIg
bV9yZW5kZXJUaHJlYWQ7CiAgICAgYm9vbCBtX3N0YXJ0ZWRSZW5kZXJpbmc7Ci0gICAgc3RhdGlj
IHZvaWQqIHJlbmRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpOworICAgIHN0YXRpYyB2b2lkIHJl
bmRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpOwogICAgIHZvaWQgcmVuZGVyKCk7CiAgICAgCiAg
ICAgLy8gRm9yIGNvbXBsZXRpb24gY2FsbGJhY2sgb24gbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTNiYTBiZi4uMzRjZjkwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTIzLDEyICsxMjMsMTIgQEAg
Ym9vbCBXb3JrZXJUaHJlYWQ6OnN0YXJ0KCkKICAgICByZXR1cm4gbV90aHJlYWRJRDsKIH0KIAot
dm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit2b2lk
IFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJlYWQoKTsK
KyAgICBzdGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJlYWQoKTsK
IH0KIAotdm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQordm9pZCBXb3JrZXJUaHJl
YWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1f
dGhyZWFkQ3JlYXRpb25NdXRleCk7CkBAIC0xNzMsOCArMTczLDYgQEAgdm9pZCogV29ya2VyVGhy
ZWFkOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgLy8gVGhlIHRocmVhZCBvYmplY3QgbWF5IGJlIGFs
cmVhZHkgZGVzdHJveWVkIGZyb20gbm90aWZpY2F0aW9uIG5vdywgZG9uJ3QgdHJ5IHRvIGFjY2Vz
cyAidGhpcyIuCiAgICAgZGV0YWNoVGhyZWFkKHRocmVhZElEKTsKLQotICAgIHJldHVybiAwOwog
fQogCiB2b2lkIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlclRocmVhZC5oCmluZGV4IDY2NDZiMTEuLmUzYTExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBTdGF0aWMgZnVuY3Rpb24gZXhlY3V0ZWQgYXMg
dGhlIGNvcmUgcm91dGluZSBvbiB0aGUgbmV3IHRocmVhZC4gUGFzc2VkIGEgcG9pbnRlciB0byBh
IFdvcmtlclRocmVhZCBvYmplY3QuCi0gICAgICAgIHN0YXRpYyB2b2lkKiB3b3JrZXJUaHJlYWRT
dGFydCh2b2lkKik7Ci0gICAgICAgIHZvaWQqIHdvcmtlclRocmVhZCgpOworICAgICAgICBzdGF0
aWMgdm9pZCB3b3JrZXJUaHJlYWRTdGFydCh2b2lkKik7CisgICAgICAgIHZvaWQgd29ya2VyVGhy
ZWFkKCk7CiAKICAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwogICAgICAgICBX
b3JrZXJSdW5Mb29wIG1fcnVuTG9vcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAzMmRiMzE4Li41N2Y2
Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDItMTQgIEthbGV2
IExlbWJlciAgPGthbGV2bGVtYmVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2Vk
IHBhcmFtZXRlcnMgZnJvbSBXVEYgdGhyZWFkaW5nIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzODkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIGhhZCBh
biBvdXQgcGFyYW0gJ3ZvaWQgKipyZXN1bHQnIHRvIGdldCB0aGUKKyAgICAgICAgJ3ZvaWQgKicg
cmV0dXJuZWQgYnkgVGhyZWFkRnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBp
bgorICAgICAgICBUaHJlYWRpbmdXaW4uY3BwIGlnbm9yZWQgdGhlIG91dCBwYXJhbSwgbm90IGZp
bGxpbmcgaXQgaW4uIFRoaXMgaGFkCisgICAgICAgIGxlZCB0byBhIHNpdHVhdGlvbiB3aGVyZSBu
b25lIG9mIHRoZSBjbGllbnQgY29kZSBtYWRlIHVzZSBvZiB0aGUgcGFyYW0KKyAgICAgICAgYW5k
IGp1c3QgaWdub3JlZCBpdC4KKworICAgICAgICBUbyBjbGVhbiB0aGlzIHVwLCB0aGUgcGF0Y2gg
Y2hhbmdlcyB0aGUgc2lnbmF0dXJlIG9mIFRocmVhZEZ1bmN0aW9uIHRvCisgICAgICAgIHJldHVy
biB2b2lkIGluc3RlYWQgb2Ygdm9pZCogYW5kIGRyb3BzIHRoZSB0aGUgdW51c2VkICd2b2lkICoq
cmVzdWx0JworICAgICAgICBwYXJhbWV0ZXIgZnJvbSB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbi4g
QWxzbywgYWxsIGNsaWVudCBjb2RlIGlzCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBBUEkgY2hh
bmdlLgorCisgICAgICAgIEFzIG1lbnRpb25lZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzgzODkgLCBldmVuCisgICAgICAgIHRob3VnaCB0aGUgY2hhbmdlIG9u
bHkgYWZmZWN0cyBpbnRlcm5hbCBBUEksIFNhZmFyaSBpcyB1c2luZyBpdAorICAgICAgICBkaXJl
Y3RseSBhbmQgd2UnbGwgbmVlZCB0byBrZWVwIHRoZSBvbGQgdmVyc2lvbnMgYXJvdW5kIGZvciBB
QkkKKyAgICAgICAgY29tcGF0aWJpbGl0eS4gRm9yIHRoaXMsIHRoZSBwYXRjaCBhZGRzIGNvbXBh
dGliaWxpdHkgd3JhcHBlcnMgd2l0aAorICAgICAgICB0aGUgb2xkIEFCSS4KKworICAgICAgICAq
IFdlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRlZjogQWRkIHRoZSBuZXcgZnVuY3Rpb25zLgor
ICAgICAgICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZjogRGl0dG8uCisK
IDIwMTItMDItMDcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmVwbGFjZW1lbnQgdGV4dCBzaG91bGQgYmUgYXZhaWxhYmxlIGZyb20gdGhlIG1hcmtlci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJv
LmRlZiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRlZgpp
bmRleCA4OWIwYTJhLi5lNGNkMjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0
LnZjcHJvai9XZWJLaXRfQ2Fpcm8uZGVmCkBAIC0xMjIsNiArMTIyLDcgQEAgRVhQT1JUUwogICAg
ICAgICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/Y2Fs
bE9uTWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFk
QFdURkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlB
SVA2QVhQQVhAWjBQQkRAWgogICAgICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCiAgICAg
ICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhy
ZWFkQFdURkBAWUFYWFoKQEAgLTEzOSw1ICsxNDAsNiBAQCBFWFBPUlRTCiAgICAgICAgID91bmxv
Y2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgICAgID91
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBa
CisgICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElAWgogICAgICAgICA/
d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgICAgICA/Y3JlYXRl
VGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZiBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZgppbmRleCAxYjFiNzJkLi5l
NGFjMTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktp
dF9DYWlyb19kZWJ1Zy5kZWYKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXRfQ2Fpcm9fZGVidWcuZGVmCkBAIC0xMjIsNiArMTIyLDcgQEAgRVhQT1JUUwogICAgICAg
ICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/Y2FsbE9u
TWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdU
RkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVhQQVhAWjBQQkRAWgogICAgICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCiAgICAgICAg
ID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFk
QFdURkBAWUFYWFoKQEAgLTEzOSw1ICsxNDAsNiBAQCBFWFBPUlRTCiAgICAgICAgID91bmxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgICAgID91cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCisg
ICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElAWgogICAgICAgICA/d2Fp
dEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgICAgICA/Y3JlYXRlVGhy
ZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MmQ0NmJlLi44OGVkYmM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDItMTQgIEthbGV2IExlbWJlciAg
PGthbGV2bGVtYmVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIHBhcmFtZXRl
cnMgZnJvbSBXVEYgdGhyZWFkaW5nIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzgzODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIGhhZCBhbiBvdXQgcGFy
YW0gJ3ZvaWQgKipyZXN1bHQnIHRvIGdldCB0aGUKKyAgICAgICAgJ3ZvaWQgKicgcmV0dXJuZWQg
YnkgVGhyZWFkRnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAg
ICBUaHJlYWRpbmdXaW4uY3BwIGlnbm9yZWQgdGhlIG91dCBwYXJhbSwgbm90IGZpbGxpbmcgaXQg
aW4uIFRoaXMgaGFkCisgICAgICAgIGxlZCB0byBhIHNpdHVhdGlvbiB3aGVyZSBub25lIG9mIHRo
ZSBjbGllbnQgY29kZSBtYWRlIHVzZSBvZiB0aGUgcGFyYW0KKyAgICAgICAgYW5kIGp1c3QgaWdu
b3JlZCBpdC4KKworICAgICAgICBUbyBjbGVhbiB0aGlzIHVwLCB0aGUgcGF0Y2ggY2hhbmdlcyB0
aGUgc2lnbmF0dXJlIG9mIFRocmVhZEZ1bmN0aW9uIHRvCisgICAgICAgIHJldHVybiB2b2lkIGlu
c3RlYWQgb2Ygdm9pZCogYW5kIGRyb3BzIHRoZSB0aGUgdW51c2VkICd2b2lkICoqcmVzdWx0Jwor
ICAgICAgICBwYXJhbWV0ZXIgZnJvbSB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbi4gQWxzbywgYWxs
IGNsaWVudCBjb2RlIGlzCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBBUEkgY2hhbmdlLgorCisg
ICAgICAgIEFzIG1lbnRpb25lZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzgzODkgLCBldmVuCisgICAgICAgIHRob3VnaCB0aGUgY2hhbmdlIG9ubHkgYWZmZWN0
cyBpbnRlcm5hbCBBUEksIFNhZmFyaSBpcyB1c2luZyBpdAorICAgICAgICBkaXJlY3RseSBhbmQg
d2UnbGwgbmVlZCB0byBrZWVwIHRoZSBvbGQgdmVyc2lvbnMgYXJvdW5kIGZvciBBQkkKKyAgICAg
ICAgY29tcGF0aWJpbGl0eS4gRm9yIHRoaXMsIHRoZSBwYXRjaCBhZGRzIGNvbXBhdGliaWxpdHkg
d3JhcHBlcnMgd2l0aAorICAgICAgICB0aGUgb2xkIEFCSS4KKworICAgICAgICAqIFBsYXRmb3Jt
L1dvcmtRdWV1ZS5oOgorICAgICAgICAoV29ya1F1ZXVlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9n
dGsvV29ya1F1ZXVlR3RrLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6c3RhcnRXb3JrUXVldWVU
aHJlYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvVGhyZWFkTGF1bmNoZXJN
YWMubW06CisgICAgICAgIChXZWJLaXQ6OndlYlRocmVhZEJvZHkpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9xdC9UaHJlYWRMYXVuY2hlclF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
d2ViVGhyZWFkQm9keSk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9UaHJlYWRM
YXVuY2hlcldpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OndlYlRocmVhZEJvZHkpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OnJhbmRvbUNy
YXNoVGhyZWFkKToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dl
YktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTAyLTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgV2luZG93cyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5oCmluZGV4IDU4N2VmODkuLjdiNGFmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtR
dWV1ZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICBRVGhyZWFkKiBtX3dvcmtU
aHJlYWQ7CiAgICAgZnJpZW5kIGNsYXNzIFdvcmtJdGVtUXQ7CiAjZWxpZiBQTEFURk9STShHVEsp
Ci0gICAgc3RhdGljIHZvaWQqIHN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOworICAg
IHN0YXRpYyB2b2lkIHN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSopOwogICAgIHZvaWQg
d29ya1F1ZXVlVGhyZWFkQm9keSgpOwogICAgIHZvaWQgZGlzcGF0Y2hPblNvdXJjZShHU291cmNl
KiwgY29uc3QgRnVuY3Rpb248dm9pZCgpPiYsIEdTb3VyY2VGdW5jKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcAppbmRleCAxMTJiYTI4Li5mMGMxMWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcApAQCAt
MTQyLDEwICsxNDIsOSBAQCB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAg
ICB9CiB9CiAKLXZvaWQqIFdvcmtRdWV1ZTo6c3RhcnRXb3JrUXVldWVUaHJlYWQoV29ya1F1ZXVl
KiB3b3JrUXVldWUpCit2b2lkIFdvcmtRdWV1ZTo6c3RhcnRXb3JrUXVldWVUaHJlYWQoV29ya1F1
ZXVlKiB3b3JrUXVldWUpCiB7CiAgICAgd29ya1F1ZXVlLT53b3JrUXVldWVUaHJlYWRCb2R5KCk7
Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjp3b3JrUXVldWVUaHJlYWRCb2R5
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvVGhy
ZWFkTGF1bmNoZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFj
L1RocmVhZExhdW5jaGVyTWFjLm1tCmluZGV4IGRkNTNiM2UuLjdjMDExNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvVGhyZWFkTGF1bmNoZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9UaHJlYWRMYXVu
Y2hlck1hYy5tbQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkKiB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNv
bnRleHQpCitzdGF0aWMgdm9pZCB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNvbnRleHQpCiB7CiAgICAg
bWFjaF9wb3J0X3Qgc2VydmVyUG9ydCA9IHN0YXRpY19jYXN0PG1hY2hfcG9ydF90PihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOwogCkBAIC01Miw4ICs1Miw2IEBAIHN0YXRp
YyB2b2lkKiB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNvbnRleHQpCiAgICAgW3Bvb2wgZHJhaW5dOwog
CiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLT5ydW4oKTsKLQotICAgIHJldHVybiAwOwogfQogCiBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIFRocmVhZExhdW5jaGVyOjpjcmVhdGVXZWJU
aHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0
L1RocmVhZExhdW5jaGVyUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L3F0L1RocmVhZExhdW5jaGVyUXQuY3BwCmluZGV4IDFkMGNhZjMuLjM3ZDA0NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9UaHJlYWRMYXVuY2hlclF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvVGhyZWFkTGF1
bmNoZXJRdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiAv
KiBjb250ZXh0ICovKQorc3RhdGljIHZvaWQgd2ViVGhyZWFkQm9keSh2b2lkKiAvKiBjb250ZXh0
ICovKQogewogICAgIC8vIEluaXRpYWxpemF0aW9uCiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFk
aW5nKCk7CkBAIC01Nyw4ICs1Nyw2IEBAIHN0YXRpYyB2b2lkKiB3ZWJUaHJlYWRCb2R5KHZvaWQq
IC8qIGNvbnRleHQgKi8pCiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKC0x
LCBSdW5Mb29wOjpjdXJyZW50KCkpOwogICAgIFJ1bkxvb3A6OnJ1bigpOwotCi0gICAgcmV0dXJu
IDA7CiB9CiAKIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgVGhyZWFkTGF1bmNoZXI6
OmNyZWF0ZVdlYlRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvd2luL1RocmVhZExhdW5jaGVyV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci93aW4vVGhyZWFkTGF1bmNoZXJXaW4uY3BwCmluZGV4IGY5ZDFjMDQuLjVh
YmVjN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci93aW4v
VGhyZWFkTGF1bmNoZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci93aW4vVGhyZWFkTGF1bmNoZXJXaW4uY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQqIHdl
YlRocmVhZEJvZHkodm9pZCogY29udGV4dCkKK3N0YXRpYyB2b2lkIHdlYlRocmVhZEJvZHkodm9p
ZCogY29udGV4dCkKIHsKICAgICBIQU5ETEUgY2xpZW50SWRlbnRpZmllciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SEFORExFPihjb250ZXh0KTsKIApAQCAtNDYsOCArNDYsNiBAQCBzdGF0aWMgdm9pZCog
d2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
aW5pdGlhbGl6ZShjbGllbnRJZGVudGlmaWVyLCBSdW5Mb29wOjpjdXJyZW50KCkpOwogICAgIFJ1
bkxvb3A6OnJ1bigpOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIENvcmVJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgVGhyZWFkTGF1bmNoZXI6OmNyZWF0ZVdlYlRocmVhZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBkMDk4MTA3Li4yY2YyYWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEwMCw3ICsxMDAsNyBA
QCBzdGF0aWMgdm9pZCBzbGVlcCh1bnNpZ25lZCBzZWNvbmRzKQogfQogI2VuZGlmCiAKLXN0YXRp
YyB2b2lkKiByYW5kb21DcmFzaFRocmVhZCh2b2lkKikKK3N0YXRpYyB2b2lkIHJhbmRvbUNyYXNo
VGhyZWFkKHZvaWQqKQogewogICAgIC8vIFRoaXMgZGVsYXkgd2FzIGNob3NlbiBzZW1pLWFyYml0
cmFyaWx5LiBXZSB3YW50IHRoZSBjcmFzaCB0byBoYXBwZW4gc29tZXdoYXQgcXVpY2tseSB0bwog
ICAgIC8vIGVuYWJsZSB1c2VmdWwgc3RyZXNzIHRlc3RpbmcsIGJ1dCBub3Qgc28gcXVpY2tseSB0
aGF0IHRoZSB3ZWIgcHJvY2VzcyB3aWxsIGFsd2F5cyBjcmFzaCBzb29uCkBAIC0xMDksNyArMTA5
LDYgQEAgc3RhdGljIHZvaWQqIHJhbmRvbUNyYXNoVGhyZWFkKHZvaWQqKQogCiAgICAgc2xlZXAo
cmFuZG9tTnVtYmVyKCkgKiBtYXhpbXVtUmFuZG9tQ3Jhc2hEZWxheSk7CiAgICAgQ1JBU0goKTsK
LSAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgc3RhcnRSYW5kb21DcmFzaFRocmVhZElm
UmVxdWVzdGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBi
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA3NjgzMGUwLi44NGZjZDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xMTYsNiArMTE2LDcgQEAgRVhQT1JUUwogICAgICAg
ICA/YnJvYWRjYXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/Y2FsbE9u
TWFpblRocmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdU
RkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVhQQVhAWjBQQkRAWgogICAgICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCiAgICAgICAg
ID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFk
QFdURkBAWUFYWFoKQEAgLTEzMSw2ICsxMzIsNyBAQCBFWFBPUlRTCiAgICAgICAgID91bmxvY2tA
TXV0ZXhAV1RGQEBRQUVYWFoKICAgICAgICAgP3VubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0
YXRpY011dGV4QFdURkBAWUFYWFoKICAgICAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBA
UUFFWEFBVk11dGV4QDJAQFoKKyAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBA
WUFISUBaCiAgICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQQVBBWEBa
CiAgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBAWgogICAgICAgICA7
IFJlLWV4cG9ydHMgZnJvbSBXZWJDb3JlIGZvciB0ZXN0IGhhcm5lc3NlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IDNhOTI3YzIuLjA1MTdkNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTEwOSw2ICsxMDksNyBAQCBFWFBPUlRTCiAgICAgICAg
ID9icm9hZGNhc3RAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWFhaCiAgICAgICAgID9jYWxsT25N
YWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgICAgID9jcmVhdGVUaHJlYWRAV1RG
QEBZQUlQNkFQQVhQQVhAWjBQQkRAWgorICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZB
WFBBWEBaMFBCREBaCiAgICAgICAgID9jdXJyZW50VGhyZWFkQFdURkBAWUFJWFoKICAgICAgICAg
P2RldGFjaFRocmVhZEBXVEZAQFlBWElAWgogICAgICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRA
V1RGQEBZQVhYWgpAQCAtMTI0LDYgKzEyNSw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VubG9ja0BN
dXRleEBXVEZAQFFBRVhYWgogICAgICAgICA/dW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3Rh
dGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZ
QUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoK
ICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCiAK
</data>
<flag name="commit-queue"
          id="129197"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127159</attachid>
            <date>2012-02-15 04:35:29 -0800</date>
            <delta_ts>2012-02-15 04:58:29 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>wtf_threading_api3.patch</filename>
            <type>text/plain</type>
            <size>53677</size>
            <attacher name="Kalev Lember">kalevlember</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZmJjNDAuLjMxNWViZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIg
IDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0
ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBh
cmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVk
IGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAg
ICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0
IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0
aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGln
bm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMg
dGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBp
bnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcK
KyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFs
bCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKwor
ICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5k
IHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAg
ICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5
IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9v
bC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmMpOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1RocmVhZDo6c3RvcCk6CisgICAgICAgICogYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmg6CisgICAgICAgIChTYW1wbGluZ1RocmVhZCk6CisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6fkhlYXApOgorICAgICAgICAoSlNDOjpI
ZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmMpOgorICAgICAgICAqIGhlYXAvSGVhcC5o
OgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
VGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVhZFN0YXJ0RnVuYyk6CisgICAgICAgIChKU0M6
Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6On5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKToK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoTWFya1N0YWNrVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAg
ICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQp
OgorICAgICAgICAqIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgIChUaHJlYWRQ
cml2YXRlKToKKyAgICAgICAgKiB3dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmg6IFVwZGF0
ZSB0aGUgc2lnbmF0dXJlIG9mCisgICAgICAgIFRocmVhZEZ1bmN0aW9uLgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6dGhyZWFkRW50
cnlQb2ludCk6IFVwZGF0ZSBmb3IgVGhyZWFkRnVuY3Rpb24gc2lnbmF0dXJlIGNoYW5nZS4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OkNvbXBhdEludm9jYXRpb246OkNvbXBhdEludm9j
YXRpb24pOiBDb21wYXQgZnVuY3Rpb24gZm9yIFNhZmFyaS4KKyAgICAgICAgKENvbXBhdEludm9j
YXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y29tcGF0RW50cnlQb2ludCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjcmVhdGVUaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6d2FpdEZv
clRocmVhZENvbXBsZXRpb24pOiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IFVw
ZGF0ZSB0aGUgc2lnbmF0dXJlIG9mIFRocmVhZEZ1bmN0aW9uIGFuZAorICAgICAgICB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbi4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcDogSW1wbGVtZW50IHRoZSBuZXcgQVBJLgorICAgICAgICAoV1RGOjp3dGZU
aHJlYWRFbnRyeVBvaW50KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmNyZWF0ZVRo
cmVhZEludGVybmFsKToKKyAgICAgICAgKFdURjo6d2FpdEZvclRocmVhZENvbXBsZXRpb24pOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOiBJbXBsZW1lbnQgdGhlIG5ldyBBUEkuCisg
ICAgICAgIChXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQpOgorICAgICAgICAoV1RGOjp3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbik6CisKIDIwMTItMDItMTMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG9ic29sZXRlICNpZiBmcm9tIFRocmVh
ZFNwZWNpZmljLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpp
bmRleCA2ZmJjYTdmLi5lMWUxZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUub3JkZXIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLm9yZGVyCkBAIC01OCw2ICs1OCw3IEBAIF9fWk4zV1RGNU11dGV4NnVubG9ja0V2CiBf
X1pOM1dURjEwU3RyaW5nSW1wbDEyc2hhcmVkQnVmZmVyRXYKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
OGVuZHNXaXRoRVBTMF9iCiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCitf
X1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGdlB2RVMwX1BLYwogX19aTjNXVEYyMGNyZWF0ZVRocmVh
ZEludGVybmFsRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURkwzNWVzdGFibGlzaElkZW50aWZpZXJG
b3JQdGhyZWFkSGFuZGxlRVJLUDE3X29wYXF1ZV9wdGhyZWFkX3QKIF9fWk4zV1RGOUhhc2hUYWJs
ZUlqU3Q0cGFpcklqUDE3X29wYXF1ZV9wdGhyZWFkX3RFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJ
UzRfRUVOU183SW50SGFzaElqRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lq
RUVOU0FfSVMzX0VFRUVTQl9FNnJlaGFzaEVpCkBAIC0xMTUzLDYgKzExNTQsNyBAQCBfX1pOM1dU
RjEwZmFzdFN0ckR1cEVQS2MKIF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNf
MTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRQogX0pTU3RyaW5nUmV0YWluCiBfX19p
bml0aWFsaXplU2NhdmVuZ2VyX2Jsb2NrX2ludm9rZV8xCitfX1pOM1dURjIzd2FpdEZvclRocmVh
ZENvbXBsZXRpb25FagogX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQUHYKIF9K
U09iamVjdENvcHlQcm9wZXJ0eU5hbWVzCiBfX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlO
YW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKaW5kZXggNjMwZjZiYzAuLmJjNjFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xMjIsNiArMTIyLDcgQEAg
RVhQT1JUUwogICAgID9jcmVhdGVUYWJsZUBIYXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxE
YXRhQDJAQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICA/
Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICA/Y3JlYXRlVGhyZWFk
QFdURkBAWUFJUDZBWFBBWEBaMFBCREBaCiAgICAgP2NyZWF0ZVR5cGVFcnJvckBKU0NAQFlBUEFW
SlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXJAV1RGQEBZQUlYWgogICAgID9jcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlc0BXVEZAQFlBWFBBWElAWgpAQCAtMzYyLDYgKzM2Myw3IEBAIEVYUE9SVFMKICAg
ICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbFRoaXNASlNDQEBLQVhQQVZKU0NlbGxAMkBBQVZTbG90
VmlzaXRvckAyQEBaCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBTQVhQQVZKU0Nl
bGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBA
UUFFWEFBVk11dGV4QDJAQFoKKyAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJ
QFoKICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93
cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP3dyaXRlQmFycmll
ckBIYW5kbGVIZWFwQEpTQ0BAUUFFWFBBVkpTVmFsdWVAMkBBQlYzMkBAWgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAppbmRleCA2NDMxMzE5Li4w
NzdmMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdU
b29sLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2FtcGxpbmdUaHJlYWQ6OnNfcnVubmlu
ZyA9IGZhbHNlOwogdW5zaWduZWQgU2FtcGxpbmdUaHJlYWQ6OnNfaGVydHogPSAxMDAwMDsKIFRo
cmVhZElkZW50aWZpZXIgU2FtcGxpbmdUaHJlYWQ6OnNfc2FtcGxpbmdUaHJlYWQ7CiAKLXZvaWQq
IFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCit2b2lkIFNhbXBsaW5nVGhy
ZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCiB7CiAgICAgd2hpbGUgKHNfcnVubmluZykgewog
ICAgICAgICBzbGVlcEZvck1pY3Jvc2Vjb25kcyhoZXJ0ejJ1cyhzX2hlcnR6KSk7CkBAIC0yMjUs
OCArMjI1LDYgQEAgdm9pZCogU2FtcGxpbmdUaHJlYWQ6OnRocmVhZFN0YXJ0RnVuYyh2b2lkKikK
ICAgICAgICAgU2FtcGxpbmdUb29sOjpzYW1wbGUoKTsKICNlbmRpZgogICAgIH0KLQotICAgIHJl
dHVybiAwOwogfQogCiAKQEAgLTI0Myw3ICsyNDEsNyBAQCB2b2lkIFNhbXBsaW5nVGhyZWFkOjpz
dG9wKCkKIHsKICAgICBBU1NFUlQoc19ydW5uaW5nKTsKICAgICBzX3J1bm5pbmcgPSBmYWxzZTsK
LSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkLCAwKTsKKyAgICB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggMzJhNDRhZC4u
MjhmZDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBs
aW5nVG9vbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rv
b2wuaApAQCAtMjIzLDcgKzIyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0xMDAwMCk7CiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHN0b3AoKTsKIAotICAgICAgICBzdGF0
aWMgdm9pZCogdGhyZWFkU3RhcnRGdW5jKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGhy
ZWFkU3RhcnRGdW5jKHZvaWQqKTsKICAgICB9OwogCiAgICAgY2xhc3MgU2FtcGxpbmdUb29sIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOGUxMGJkNS4uNGUxMzA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBIZWFwOjp+
SGVhcCgpCiAgICAgICAgIG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCA9IHRydWU7CiAg
ICAgICAgIG1fZnJlZUJsb2NrQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KLSAgICB3YWl0
Rm9yVGhyZWFkQ29tcGxldGlvbihtX2Jsb2NrRnJlZWluZ1RocmVhZCwgMCk7CisgICAgd2FpdEZv
clRocmVhZENvbXBsZXRpb24obV9ibG9ja0ZyZWVpbmdUaHJlYWQpOwogCiAgICAgLy8gVGhlIGRl
c3Ryb3kgZnVuY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjYWxsZWQsIHNvIGFzc2VydCB0
aGlzLgogICAgIEFTU0VSVCghbV9nbG9iYWxEYXRhKTsKQEAgLTQwNywxMCArNDA3LDkgQEAgdm9p
ZCBIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSkKICAgICB3YWl0Rm9y
UmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5nTG9jayhyZWxhdGl2ZSk7CiB9CiAKLXZvaWQqIEhlYXA6
OmJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKQordm9pZCBIZWFwOjpibG9j
a0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCkKIHsKICAgICBzdGF0aWNfY2FzdDxI
ZWFwKj4oaGVhcCktPmJsb2NrRnJlZWluZ1RocmVhZE1haW4oKTsKLSAgICByZXR1cm4gMDsKIH0K
IAogdm9pZCBIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRNYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAppbmRleCA4N2EyMGEwLi5iYWMwODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCkBAIC0xODcsNyArMTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgd2Fp
dEZvclJlbGF0aXZlVGltZVdoaWxlSG9sZGluZ0xvY2soZG91YmxlIHJlbGF0aXZlKTsKICAgICAg
ICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7CiAgICAgICAgIHZv
aWQgYmxvY2tGcmVlaW5nVGhyZWFkTWFpbigpOwotICAgICAgICBzdGF0aWMgdm9pZCogYmxvY2tG
cmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGhlYXApOworICAgICAgICBzdGF0aWMgdm9pZCBi
bG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCk7CiAgICAgICAgIAogICAgICAg
ICBjb25zdCBIZWFwU2l6ZSBtX2hlYXBTaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9taW5C
eXRlc1BlckN5Y2xlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5k
ZXggOWEzMDkyMy4uMTNkMzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suY3BwCkBAIC0yMjYsMTAgKzIyNiw5IEBAIHZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0
YTo6bWFya2luZ1RocmVhZE1haW4oKQogICAgIHNsb3RWaXNpdG9yLmRyYWluRnJvbVNoYXJlZChT
bG90VmlzaXRvcjo6U2xhdmVEcmFpbik7CiB9CiAKLXZvaWQqIE1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGE6Om1hcmtpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogc2hhcmVkKQordm9pZCBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkK
IHsKICAgICBzdGF0aWNfY2FzdDxNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKj4oc2hhcmVkKS0+
bWFya2luZ1RocmVhZE1haW4oKTsKLSAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCkBAIC0yNTgs
NyArMjU3LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6fk1hcmtTdGFja1RocmVhZFNo
YXJlZERhdGEoKQogICAgICAgICBtX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAg
fQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzLnNpemUoKTsg
KytpKQotICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX21hcmtpbmdUaHJlYWRzW2ld
LCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9tYXJraW5nVGhyZWFkc1tp
XSk7CiAjZW5kaWYKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgK
aW5kZXggNjkyM2NkZC4uMzAxOTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShQ
QVJBTExFTF9HQykKICAgICAgICAgdm9pZCBtYXJraW5nVGhyZWFkTWFpbigpOwotICAgICAgICBz
dGF0aWMgdm9pZCogbWFya2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgbWFya2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKICNlbmRpZgog
CiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggZmQ1YjFmOC4uMmNj
MGJjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNH
ZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dl
bmVyaWMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpU
aHJlYWRQcml2YXRlOjp3YWl0Rm9yRmluaXNoKCkKICAgICAgICAgbV90aHJlYWRDb25kaXRpb24u
d2FpdChtX211dGV4KTsKIH0KIAotdm9pZCogUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJp
dmF0ZTo6d29ya2VyVGhyZWFkKHZvaWQqIHRocmVhZERhdGEpCit2b2lkIFBhcmFsbGVsRW52aXJv
bm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCh2b2lkKiB0aHJlYWREYXRhKQogewog
ICAgIFRocmVhZFByaXZhdGUqIHNoYXJlZFRocmVhZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGhyZWFk
UHJpdmF0ZSo+KHRocmVhZERhdGEpOwogICAgIE11dGV4TG9ja2VyIGxvY2soc2hhcmVkVGhyZWFk
LT5tX211dGV4KTsKQEAgLTEzNiw3ICsxMzYsNiBAQCB2b2lkKiBQYXJhbGxlbEVudmlyb25tZW50
OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQodm9pZCogdGhyZWFkRGF0YSkKIAogICAgICAg
ICBzaGFyZWRUaHJlYWQtPm1fdGhyZWFkQ29uZGl0aW9uLndhaXQoc2hhcmVkVGhyZWFkLT5tX211
dGV4KTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaAppbmRleCAx
YzdkNjNjLi42ZGU3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bh
cmFsbGVsSm9ic0dlbmVyaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFs
bGVsSm9ic0dlbmVyaWMuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZFByaXZhdGUoKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCogd29ya2VyVGhyZWFkKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
d29ya2VyVGhyZWFkKHZvaWQqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFRocmVhZElkZW50
aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZEZ1bmN0aW9uSW52b2NhdGlvbi5oCmluZGV4IGYxZTE0NzIuLjJkODU5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRGdW5jdGlvbkludm9jYXRpb24u
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiB2b2lkKiAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7Cit0eXBlZGVmIHZvaWQgKCpUaHJlYWRG
dW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogCiBzdHJ1Y3QgVGhyZWFkRnVuY3Rpb25JbnZvY2F0
aW9uIHsKICAgICBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24oVGhyZWFkRnVuY3Rpb24gZnVuY3Rp
b24sIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKaW5k
ZXggZDhkYmJhZS4uN2M4MGQzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
LmNwcApAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGhyZWFkaW5nLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtNDcsNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgTXV0ZXggY3JlYXRpb25NdXRleDsKIH07CiAKLXN0YXRpYyB2b2lkKiB0aHJlYWRF
bnRyeVBvaW50KHZvaWQqIGNvbnRleHREYXRhKQorc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2lu
dCh2b2lkKiBjb250ZXh0RGF0YSkKIHsKICAgICBOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0ID0g
cmVpbnRlcnByZXRfY2FzdDxOZXdUaHJlYWRDb250ZXh0Kj4oY29udGV4dERhdGEpOwogCkBAIC02
NCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZvaWQqIGNvbnRleHRE
YXRhKQogICAgIHZvaWQqIGRhdGEgPSBjb250ZXh0LT5kYXRhOwogICAgIGRlbGV0ZSBjb250ZXh0
OwogCi0gICAgcmV0dXJuIGVudHJ5UG9pbnQoZGF0YSk7CisgICAgZW50cnlQb2ludChkYXRhKTsK
IH0KIAogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQ
b2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogbmFtZSkKQEAgLTk1LDYgKzk3LDUxIEBAIFRo
cmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZv
aWQqIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVRocmVhZChlbnRyeVBvaW50LCBkYXRhLCAw
KTsKIH0KKworCisvLyBGb3IgQUJJIGNvbXBhdGliaWxpdHkgd2l0aCBTYWZhcmkgb24gTWFjIC8g
V2luZG93czogU2FmYXJpIHVzZXMgdGhlIHByaXZhdGUKKy8vIGNyZWF0ZVRocmVhZCgpIGFuZCB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIGZ1bmN0aW9ucyBkaXJlY3RseSBhbmQgd2UgbmVlZAor
Ly8gdG8ga2VlcCB0aGUgb2xkIEFCSSBjb21wYXRpYmlsaXR5IHVudGlsIGl0J3MgYmVlbiByZWJ1
aWx0LgorCit0eXBlZGVmIHZvaWQqICgqQ29tcGF0RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsK
KworV1RGX0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKENvbXBh
dEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqIG5hbWUpOworCitz
dHJ1Y3QgQ29tcGF0SW52b2NhdGlvbiB7CisgICAgQ29tcGF0SW52b2NhdGlvbihDb21wYXRGdW5j
dGlvbiBmdW5jdGlvbiwgdm9pZCogZGF0YSkKKyAgICAgICAgOiBmdW5jdGlvbihmdW5jdGlvbikK
KyAgICAgICAgLCBkYXRhKGRhdGEpCisgICAgeworICAgIH0KKworICAgIENvbXBhdEZ1bmN0aW9u
IGZ1bmN0aW9uOworICAgIHZvaWQqIGRhdGE7Cit9OworCitzdGF0aWMgdm9pZCBjb21wYXRFbnRy
eVBvaW50KHZvaWQqIHBhcmFtKQoreworICAgIE93blB0cjxDb21wYXRJbnZvY2F0aW9uPiBpbnZv
Y2F0aW9uID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8Q29tcGF0SW52b2NhdGlvbio+KHBhcmFtKSk7
CisgICAgaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7Cit9CisKK1RocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKENvbXBhdEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQq
IGRhdGEsIGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgT3duUHRyPENvbXBhdEludm9jYXRpb24+
IGludm9jYXRpb24gPSBhZG9wdFB0cihuZXcgQ29tcGF0SW52b2NhdGlvbihlbnRyeVBvaW50LCBk
YXRhKSk7CisgICAgVGhyZWFkSWRlbnRpZmllciBpZCA9IGNyZWF0ZVRocmVhZChjb21wYXRFbnRy
eVBvaW50LCBpbnZvY2F0aW9uLmdldCgpLCBuYW1lKTsKKworICAgIC8vIFRoZSB0aHJlYWQgd2ls
bCB0YWtlIG93bmVyc2hpcCBvZiBpbnZvY2F0aW9uLgorICAgIGlmICghaW52b2NhdGlvbi5sZWFr
UHRyKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGlkOworfQorCitXVEZfRVhQ
T1JUX1BSSVZBVEUgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIs
IHZvaWQqKik7CisKK2ludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVy
IHRocmVhZElELCB2b2lkKiopCit7CisgICAgcmV0dXJuIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KHRocmVhZElEKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZy5oCmluZGV4IDFkZWU1ZGEuLmI1ZDQzMjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaApAQCAtNzgsNyArNzgsNyBAQAogbmFtZXNwYWNlIFdU
RiB7CiAKIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKLXR5cGVkZWYgdm9pZCog
KCpUaHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOwordHlwZWRlZiB2b2lkICgqVGhyZWFk
RnVuY3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsKIAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh
bGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVk
bHkuCiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8g
Y2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IApAQCAtOTcsNyArOTcsNyBAQCBUaHJl
YWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwg
Y29uc3QgY2hhciogdGhyZWFkTgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFs
KGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRl
bnRpZmllciBjdXJyZW50VGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdhaXRGb3JU
aHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitXVEZfRVhQT1JUX1BS
SVZBVEUgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIpOwogV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwogCiBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCA3NjNlYzJiLi4xODA1NDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAt
NDAsOSArNDAsMTIgQEAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiUmFuZG9tTnVt
YmVyU2VlZC5oIgogI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZEZ1
bmN0aW9uSW52b2NhdGlvbi5oIgogI2luY2x1ZGUgIlRocmVhZElkZW50aWZpZXJEYXRhUHRocmVh
ZHMuaCIKICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlVudXNlZFBhcmFt
LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCkBA
IC0xNTIsNiArMTU1LDE0IEBAIHZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihU
aHJlYWRJZGVudGlmaWVyIGlkKQogICAgIHRocmVhZE1hcCgpLnJlbW92ZShpZCk7CiB9CiAKK3N0
YXRpYyB2b2lkKiB3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqIHBhcmFtKQoreworICAgIE93blB0
cjxUaHJlYWRGdW5jdGlvbkludm9jYXRpb24+IGludm9jYXRpb24gPSBhZG9wdFB0cihzdGF0aWNf
Y2FzdDxUaHJlYWRGdW5jdGlvbkludm9jYXRpb24qPihwYXJhbSkpOworICAgIGludm9jYXRpb24t
PmZ1bmN0aW9uKGludm9jYXRpb24tPmRhdGEpOworCisgICAgcmV0dXJuIDA7Cit9CisKICNpZiBQ
TEFURk9STShCTEFDS0JFUlJZKQogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5h
bChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiB0aHJl
YWROYW1lKQogewpAQCAtMTcxLDggKzE4Miw5IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhy
ZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiAg
ICAgICAgICAgICBMT0dfRVJST1IoInB0aHJlYWRfYXR0cl9nZXRzdGFjaygpIGZhaWxlZDogJWQi
LCBlcnJubyk7CiAgICAgfQogCisgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4g
aW52b2NhdGlvbiA9IGFkb3B0UHRyKG5ldyBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24oZW50cnlQ
b2ludCwgZGF0YSkpOwogICAgIHB0aHJlYWRfdCB0aHJlYWRIYW5kbGU7Ci0gICAgaWYgKHB0aHJl
YWRfY3JlYXRlKCZ0aHJlYWRIYW5kbGUsICZhdHRyLCBlbnRyeVBvaW50LCBkYXRhKSkgeworICAg
IGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAmYXR0ciwgd3RmVGhyZWFkRW50cnlQ
b2ludCwgaW52b2NhdGlvbi5nZXQoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJwdGhyZWFkX2Ny
ZWF0ZSgpIGZhaWxlZDogJWQiLCBlcnJubyk7CiAgICAgICAgIHRocmVhZEhhbmRsZSA9IDA7CiAg
ICAgfQpAQCAtMTgzLDE3ICsxOTUsMjYgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJ
bnRlcm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KICAgICBp
ZiAoIXRocmVhZEhhbmRsZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvLyBUaGUgdGhyZWFk
IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgaW52b2NhdGlvbi4KKyAgICBpZiAoIWludm9jYXRpb24u
bGVha1B0cigpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBlc3RhYmxpc2hJZGVu
dGlmaWVyRm9yUHRocmVhZEhhbmRsZSh0aHJlYWRIYW5kbGUpOwogfQogI2Vsc2UKIFRocmVhZElk
ZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwg
dm9pZCogZGF0YSwgY29uc3QgY2hhciopCiB7CisgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52
b2NhdGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKG5ldyBUaHJlYWRGdW5jdGlvbkludm9jYXRp
b24oZW50cnlQb2ludCwgZGF0YSkpOwogICAgIHB0aHJlYWRfdCB0aHJlYWRIYW5kbGU7Ci0gICAg
aWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRIYW5kbGUsIDAsIGVudHJ5UG9pbnQsIGRhdGEpKSB7
Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwdGhyZWFkIGF0IGVudHJ5IHBv
aW50ICVwIHdpdGggZGF0YSAlcCIsIGVudHJ5UG9pbnQsIGRhdGEpOworICAgIGlmIChwdGhyZWFk
X2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAwLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBpbnZvY2F0aW9u
LmdldCgpKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcHRocmVhZCBh
dCBlbnRyeSBwb2ludCAlcCB3aXRoIGRhdGEgJXAiLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBpbnZv
Y2F0aW9uLmdldCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gVGhlIHRo
cmVhZCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGludm9jYXRpb24uCisgICAgaWYgKCFpbnZvY2F0
aW9uLmxlYWtQdHIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gZXN0YWJsaXNo
SWRlbnRpZmllckZvclB0aHJlYWRIYW5kbGUodGhyZWFkSGFuZGxlKTsKIH0KICNlbmRpZgpAQCAt
MjE3LDcgKzIzOCw3IEBAIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25z
dCBjaGFyKiB0aHJlYWROYW1lKQogICAgIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXpl
KGlkKTsKIH0KIAotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSUQsIHZvaWQqKiByZXN1bHQpCitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhy
ZWFkSWRlbnRpZmllciB0aHJlYWRJRCkKIHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogCkBAIC0y
MjUsNyArMjQ2LDcgQEAgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZp
ZXIgdGhyZWFkSUQsIHZvaWQqKiByZXN1bHQpCiAgICAgaWYgKCFwdGhyZWFkSGFuZGxlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGludCBqb2luUmVzdWx0ID0gcHRocmVhZF9qb2luKHB0aHJl
YWRIYW5kbGUsIHJlc3VsdCk7CisgICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4ocHRo
cmVhZEhhbmRsZSwgMCk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gRURFQURMSykKICAgICAgICAg
TE9HX0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyBmb3VuZCB0byBiZSBkZWFkbG9ja2Vk
IHRyeWluZyB0byBxdWl0IiwgdGhyZWFkSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1RocmVhZGluZ1dpbi5jcHAKaW5kZXggYWMwZjczZi4uYmMzMjI2MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtMjEwLDE0ICsyMTAsMTQgQEAgc3Rh
dGljIHZvaWQgY2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIg
aWQpCiBzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxsIHd0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCog
cGFyYW0pCiB7CiAgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4gaW52b2NhdGlv
biA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbio+KHBhcmFt
KSk7Ci0gICAgdm9pZCogcmVzdWx0ID0gaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+
ZGF0YSk7CisgICAgaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7CiAKICNp
ZiAhVVNFKFBUSFJFQURTKSAmJiBPUyhXSU5ET1dTKQogICAgIC8vIERvIHRoZSBUTFMgY2xlYW51
cC4KICAgICBUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIDA7CiB9CiAK
IFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50
cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogdGhyZWFkTmFtZSkKQEAgLTI1Miw3ICsy
NTIsNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0
aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogICAgIHJldHVybiB0aHJlYWRJRDsKIH0K
IAotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQs
IHZvaWQqKiByZXN1bHQpCitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRp
ZmllciB0aHJlYWRJRCkKIHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ5ODQ1ZDIuLjJkOGU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0w
Mi0xNCAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgorCisgICAgICAgIFJl
bW92ZSB1bnVzZWQgcGFyYW1ldGVycyBmcm9tIFdURiB0aHJlYWRpbmcgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0
aW9uKCkgaGFkIGFuIG91dCBwYXJhbSAndm9pZCAqKnJlc3VsdCcgdG8gZ2V0IHRoZQorICAgICAg
ICAndm9pZCAqJyByZXR1cm5lZCBieSBUaHJlYWRGdW5jdGlvbi4gSG93ZXZlciwgdGhlIGltcGxl
bWVudGF0aW9uIGluCisgICAgICAgIFRocmVhZGluZ1dpbi5jcHAgaWdub3JlZCB0aGUgb3V0IHBh
cmFtLCBub3QgZmlsbGluZyBpdCBpbi4gVGhpcyBoYWQKKyAgICAgICAgbGVkIHRvIGEgc2l0dWF0
aW9uIHdoZXJlIG5vbmUgb2YgdGhlIGNsaWVudCBjb2RlIG1hZGUgdXNlIG9mIHRoZSBwYXJhbQor
ICAgICAgICBhbmQganVzdCBpZ25vcmVkIGl0LgorCisgICAgICAgIFRvIGNsZWFuIHRoaXMgdXAs
IHRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBzaWduYXR1cmUgb2YgVGhyZWFkRnVuY3Rpb24gdG8KKyAg
ICAgICAgcmV0dXJuIHZvaWQgaW5zdGVhZCBvZiB2b2lkKiBhbmQgZHJvcHMgdGhlIHRoZSB1bnVz
ZWQgJ3ZvaWQgKipyZXN1bHQnCisgICAgICAgIHBhcmFtZXRlciBmcm9tIHdhaXRGb3JUaHJlYWRD
b21wbGV0aW9uLiBBbHNvLCBhbGwgY2xpZW50IGNvZGUgaXMKKyAgICAgICAgdXBkYXRlZCBmb3Ig
dGhlIEFQSSBjaGFuZ2UuCisKKyAgICAgICAgQXMgbWVudGlvbmVkIGluIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4OSAsIGV2ZW4KKyAgICAgICAgdGhvdWdoIHRo
ZSBjaGFuZ2Ugb25seSBhZmZlY3RzIGludGVybmFsIEFQSSwgU2FmYXJpIGlzIHVzaW5nIGl0Cisg
ICAgICAgIGRpcmVjdGx5IGFuZCB3ZSdsbCBuZWVkIHRvIGtlZXAgdGhlIG9sZCB2ZXJzaW9ucyBh
cm91bmQgZm9yIEFCSQorICAgICAgICBjb21wYXRpYmlsaXR5LiBGb3IgdGhpcywgdGhlIHBhdGNo
IGFkZHMgY29tcGF0aWJpbGl0eSB3cmFwcGVycyB3aXRoCisgICAgICAgIHRoZSBvbGQgQUJJLgor
CisgICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29s
bGVjdE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKToKKyAgICAgICAgKiBmaWxlYXBpL0Zp
bGVUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVRocmVhZDo6ZmlsZVRocmVhZFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVUaHJlYWQ6OnJ1bkxvb3ApOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVRocmVhZC5oOgorICAgICAgICAoRmlsZVRocmVhZCk6CisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRh
YmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRGF0YWJh
c2VTeW5jVGhyZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29u
RGF0YWJhc2VTeW5jVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3lu
Y1RocmVhZE1haW5Mb29wKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoK
KyAgICAgICAgKEljb25EYXRhYmFzZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFk
Q2FsbGJhY2spOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgor
ICAgICAgICAoU2Nyb2xsaW5nVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRG
RGF0YWJhc2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OndhaXRGb3JMb2FkZXJU
aHJlYWRDb21wbGV0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFRocmVhZEVudHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cnVuTG9hZGVyVGhyZWFkKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZFN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6
CisgICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoRGF0YWJhc2VU
aHJlYWQpOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6Cisg
ICAgICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaDoKKyAgICAgICAgKExvY2FsU3Rv
cmFnZVRocmVhZCk6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkpOgorICAg
ICAgICAqIHdlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgIChBc3luY0F1ZGlv
RGVjb2Rlcik6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5p
bml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6cmVuZGVyRW50cnkpOgorICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oOgorICAgICAgICAoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OndvcmtlclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZDo6d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAg
ICAgICAoV29ya2VyVGhyZWFkKToKKwogMjAxMi0wMi0xMyAgUGF0cmljayBHYW5zdGVyZXIgIDxw
YXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0lOXSBEZWZpbmUgSFdORF9NRVNTQUdFIGlm
IG5vdCBkb25lIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDc2NWUzNjMuLmNmNzBmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMzYsMTEgKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQqIGNvbGxlY3Qodm9p
ZCopCitzdGF0aWMgdm9pZCBjb2xsZWN0KHZvaWQqKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CiAgICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgp
LT5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIEdDQ29udHJv
bGxlciYgZ2NDb250cm9sbGVyKCkKQEAgLTc3LDcgKzc2LDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6
OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50
aWxEb24KICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gY3JlYXRlVGhyZWFkKGNvbGxl
Y3QsIDAsICJXZWJDb3JlOiBHQ0NvbnRyb2xsZXIiKTsKIAogICAgIGlmICh3YWl0VW50aWxEb25l
KSB7Ci0gICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKHRocmVhZElELCAwKTsKKyAgICAg
ICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkSUQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcAppbmRleCA0ZDU1NjMwLi44
MmJjNjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5jcHAKQEAgLTgzLDEzICs4
MywxMyBAQCB2b2lkIEZpbGVUaHJlYWQ6OnVuc2NoZWR1bGVUYXNrcyhjb25zdCB2b2lkKiBpbnN0
YW5jZSkKICAgICBtX3F1ZXVlLnJlbW92ZUlmKHByZWRpY2F0ZSk7CiB9CiAKLXZvaWQqIEZpbGVU
aHJlYWQ6OmZpbGVUaHJlYWRTdGFydCh2b2lkKiBhcmcpCit2b2lkIEZpbGVUaHJlYWQ6OmZpbGVU
aHJlYWRTdGFydCh2b2lkKiBhcmcpCiB7CiAgICAgRmlsZVRocmVhZCogZmlsZVRocmVhZCA9IHN0
YXRpY19jYXN0PEZpbGVUaHJlYWQqPihhcmcpOwotICAgIHJldHVybiBmaWxlVGhyZWFkLT5ydW5M
b29wKCk7CisgICAgZmlsZVRocmVhZC0+cnVuTG9vcCgpOwogfQogCi12b2lkKiBGaWxlVGhyZWFk
OjpydW5Mb29wKCkKK3ZvaWQgRmlsZVRocmVhZDo6cnVuTG9vcCgpCiB7CiAgICAgewogICAgICAg
ICAvLyBXYWl0IGZvciBGaWxlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRlIHRvIGhhdmUgbV90
aHJlYWRJRApAQCAtMTEwLDggKzExMCw2IEBAIHZvaWQqIEZpbGVUaHJlYWQ6OnJ1bkxvb3AoKQog
CiAgICAgLy8gQ2xlYXIgdGhlIHNlbGYgcmVmcHRyLCBwb3NzaWJseSByZXN1bHRpbmcgaW4gZGVs
ZXRpb24KICAgICBtX3NlbGZSZWYgPSAwOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKaW5kZXggOWMxZDI2
Ny4uNmMzMjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKQEAgLTcyLDggKzcy
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxlVGhyZWFkKCk7CiAKLSAgICBzdGF0aWMg
dm9pZCogZmlsZVRocmVhZFN0YXJ0KHZvaWQqKTsKLSAgICB2b2lkKiBydW5Mb29wKCk7CisgICAg
c3RhdGljIHZvaWQgZmlsZVRocmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkIHJ1bkxvb3AoKTsK
IAogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICBSZWZQdHI8RmlsZVRocmVh
ZD4gbV9zZWxmUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHAKaW5kZXggYTg1MDdhOS4uNWFlODAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6
OmNsb3NlKCkKICAgICAgICAgd2FrZVN5bmNUaHJlYWQoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IFdhaXQgZm9yIHRoZSBzeW5jIHRocmVhZCB0byB0ZXJtaW5hdGUKLSAgICAgICAgd2FpdEZvclRo
cmVhZENvbXBsZXRpb24obV9zeW5jVGhyZWFkLCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENv
bXBsZXRpb24obV9zeW5jVGhyZWFkKTsKICAgICB9CiAKICAgICBtX3N5bmNUaHJlYWRSdW5uaW5n
ID0gZmFsc2U7ICAgIApAQCAtOTQ5LDE0ICs5NDksMTQgQEAgYm9vbCBJY29uRGF0YWJhc2U6OnNo
b3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGhyZWFkVGVybWlu
YXRpb25SZXF1ZXN0ZWQgfHwgbV9yZW1vdmVJY29uc1JlcXVlc3RlZDsKIH0KIAotdm9pZCogSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCogdkljb25EYXRhYmFz
ZSkKK3ZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCog
dkljb25EYXRhYmFzZSkKIHsgICAgCiAgICAgSWNvbkRhdGFiYXNlKiBpY29uREIgPSBzdGF0aWNf
Y2FzdDxJY29uRGF0YWJhc2UqPih2SWNvbkRhdGFiYXNlKTsKICAgICAKLSAgICByZXR1cm4gaWNv
bkRCLT5pY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CisgICAgaWNvbkRCLT5pY29uRGF0YWJhc2VT
eW5jVGhyZWFkKCk7CiB9CiAKLXZvaWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1Ro
cmVhZCgpCit2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiB7CiAg
ICAgLy8gVGhlIGNhbGwgdG8gY3JlYXRlIHRoaXMgdGhyZWFkIG1pZ2h0IG5vdCBjb21wbGV0ZSBi
ZWZvcmUgdGhlIHRocmVhZCBhY3R1YWxseSBzdGFydHMsIHNvIHdlIG1pZ2h0IGZhaWwgdGhpcyBB
U1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpIGJlY2F1c2UgdGhlIHBvaW50ZXIgCiAgICAgLy8gdG8g
b3VyIHRocmVhZCBzdHJ1Y3R1cmUgaGFzbid0IGJlZW4gZmlsbGVkIGluIHlldC4KQEAgLTk4OCwx
MiArOTg4LDE0IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgp
CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICAgICAgaWYgKCFt
X3N5bmNEQi5vcGVuKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBvcGVuIGljb24gZGF0YWJhc2UgYXQgcGF0aCAlcyAtICVzIiwgbV9j
b21wbGV0ZURhdGFiYXNlUGF0aC5hc2NpaSgpLmRhdGEoKSwgbV9zeW5jREIubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpKQotICAg
ICAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgaWYgKHNob3VsZFN0b3BUaHJl
YWRBY3Rpdml0eSgpKSB7CisgICAgICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgZG91YmxlIHRp
bWVTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDAxLDggKzEwMDMsMTAgQEAgdm9pZCogSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICNlbmRpZiAgICAKIAogICAgIHBl
cmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKTsKLSAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2
aXR5KCkpCi0gICAgICAgIHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICBpZiAoc2hv
dWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpIHsKKyAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAg
ICBkb3VibGUgbmV3U3RhbXAgPSBjdXJyZW50VGltZSgpOwpAQCAtMTAyNCw4ICsxMDI4LDEwIEBA
IHZvaWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAgICAgICAgICAg
ICBpbXBvcnRUcmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpCi0gICAgICAgICAgICByZXR1cm4g
c3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZp
dHkoKSkgeworICAgICAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KICAgICAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICAg
ICAgbmV3U3RhbXAgPSBjdXJyZW50VGltZSgpOwpAQCAtMTA0MSw4ICsxMDQ3LDEwIEBAIHZvaWQq
IEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAgICAgTE9HKEljb25EYXRh
YmFzZSwgIihUSFJFQUQpIFN0YXJ0aW5nIGljb25VUkwgaW1wb3J0Iik7CiAgICAgcGVyZm9ybVVS
TEltcG9ydCgpOwogICAgIAotICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgIGlmIChzaG91bGRTdG9wVGhy
ZWFkQWN0aXZpdHkoKSkgeworICAgICAgICBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBuZXdTdGFtcCA9IGN1cnJl
bnRUaW1lKCk7CkBAIC0xMDUwLDcgKzEwNTgsNyBAQCB2b2lkKiBJY29uRGF0YWJhc2U6Omljb25E
YXRhYmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmIAogCiAgICAgTE9HKEljb25EYXRhYmFzZSwgIihU
SFJFQUQpIEJlZ2lubmluZyBzeW5jIik7Ci0gICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgp
OworICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOwogfQogCiBzdGF0aWMgaW50IGRhdGFiYXNlVmVy
c2lvbk51bWJlcihTUUxpdGVEYXRhYmFzZSYgZGIpCkBAIC0xMzQ4LDcgKzEzNTYsNyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgY2FsbE9uTWFpblRocmVhZChu
b3RpZnlQZW5kaW5nTG9hZERlY2lzaW9uc09uTWFpblRocmVhZCwgdGhpcyk7CiB9CiAKLXZvaWQq
IEljb25EYXRhYmFzZTo6c3luY1RocmVhZE1haW5Mb29wKCkKK3ZvaWQgSWNvbkRhdGFiYXNlOjpz
eW5jVGhyZWFkTWFpbkxvb3AoKQogewogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAK
QEAgLTE0NjEsOCArMTQ2OSw2IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6c3luY1RocmVhZE1haW5M
b29wKCkKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICBt
X2Rpc2FibGVkU3VkZGVuVGVybWluYXRpb25Gb3JTeW5jVGhyZWFkID0gZmFsc2U7CiAgICAgfQot
Ci0gICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggN2FiMDg0
MS4uZjRhYmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgK
QEAgLTE4MywxNSArMTgzLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3Rv
cFRocmVhZEFjdGl2aXR5KCkgY29uc3Q7CiAKIHByaXZhdGU6ICAgIAotICAgIHN0YXRpYyB2b2lk
KiBpY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCAqKTsKLSAgICB2b2lkKiBpY29uRGF0
YWJhc2VTeW5jVGhyZWFkKCk7CisgICAgc3RhdGljIHZvaWQgaWNvbkRhdGFiYXNlU3luY1RocmVh
ZFN0YXJ0KHZvaWQgKik7CisgICAgdm9pZCBpY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CiAgICAg
CiAgICAgLy8gVGhlIGZvbGxvd2luZyBibG9jayBvZiBtZXRob2RzIGFyZSBjYWxsZWQgZXhjbHVz
aXZlbHkgYnkgdGhlIHN5bmMgdGhyZWFkIHRvIG1hbmFnZSBpL28gdG8gYW5kIGZyb20gdGhlIGRh
dGFiYXNlCiAgICAgLy8gRWFjaCBtZXRob2Qgc2hvdWxkIHBlcmlvZGljYWxseSBtb25pdG9yIG1f
dGhyZWFkVGVybWluYXRpb25SZXF1ZXN0ZWQgd2hlbiBpdCBtYWtlcyBzZW5zZSB0byByZXR1cm4g
ZWFybHkgb24gc2h1dGRvd24KICAgICB2b2lkIHBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKTsK
ICAgICBib29sIGNoZWNrSW50ZWdyaXR5KCk7CiAgICAgdm9pZCBwZXJmb3JtVVJMSW1wb3J0KCk7
Ci0gICAgdm9pZCogc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgdm9pZCBzeW5jVGhyZWFkTWFp
bkxvb3AoKTsKICAgICBib29sIHJlYWRGcm9tRGF0YWJhc2UoKTsKICAgICBib29sIHdyaXRlVG9E
YXRhYmFzZSgpOwogICAgIHZvaWQgcHJ1bmVVbnJldGFpbmVkSWNvbnMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGZjNWE0
MDUuLmE5NWNmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVGhyZWFkLmNwcApAQCAtNzcsMTEgKzc3LDkgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6
OmNyZWF0ZVRocmVhZElmTmVlZGVkKCkKICAgICB9CiB9CiAKLXZvaWQqIFNjcm9sbGluZ1RocmVh
ZDo6dGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhyZWFkKQordm9pZCBTY3JvbGxpbmdU
aHJlYWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCkKIHsKICAgICBzdGF0
aWNfY2FzdDxTY3JvbGxpbmdUaHJlYWQqPihzY3JvbGxpbmdUaHJlYWQpLT50aHJlYWRCb2R5KCk7
Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZEJvZHko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApp
bmRleCAyMjY3MWU0Li5kOGRmYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBTY3JvbGxpbmdUaHJlYWQmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBjcmVhdGVUaHJlYWRJ
Zk5lZWRlZCgpOwotICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxp
bmdUaHJlYWQpOworICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGlu
Z1RocmVhZCk7CiAgICAgdm9pZCB0aHJlYWRCb2R5KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZ1bmN0
aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggY2I3MzU1YS4uOGY5NmM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwCkBAIC04MCwxMyArODAsMTEgQEAgSFJURkRhdGFiYXNlTG9hZGVyOjp+SFJU
RkRhdGFiYXNlTG9hZGVyKCkKIAogCiAvLyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFz
ZSBpbiB0aGlzIHRocmVhZC4KLXN0YXRpYyB2b2lkKiBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQq
IHRocmVhZERhdGEpCitzdGF0aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRocmVh
ZERhdGEpCiB7CiAgICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSByZWludGVycHJldF9j
YXN0PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOwogICAgIEFTU0VSVChsb2FkZXIp
OwogICAgIGxvYWRlci0+bG9hZCgpOwotICAgIAotICAgIHJldHVybiAwOwogfQogCiB2b2lkIEhS
VEZEYXRhYmFzZUxvYWRlcjo6bG9hZCgpCkBAIC0xMjEsNyArMTE5LDcgQEAgdm9pZCBIUlRGRGF0
YWJhc2VMb2FkZXI6OndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCkKICAgICAKICAgICAv
LyB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlIGZv
ciB0aGUgc2FtZSB0aHJlYWQuCiAgICAgaWYgKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQpCi0gICAg
ICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQsIDApOwor
ICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX2RhdGFiYXNlTG9hZGVyVGhyZWFkKTsK
ICAgICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggYzYxMTQxNC4uYzZh
YjU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuY3BwCkBAIC01MywxMSArNTMsMTAgQEAgY29uc3Qgc2l6ZV90IFJlYWx0aW1lRnJhbWVM
aW1pdCA9IDgxOTIgICsgNDA5NjsgLy8gfjI3OG1zZWMgQCA0NC4xS0h6CiBjb25zdCBzaXplX3Qg
TWluRkZUU2l6ZSA9IDI1NjsKIGNvbnN0IHNpemVfdCBNYXhSZWFsdGltZUZGVFNpemUgPSAyMDQ4
OwogCi1zdGF0aWMgdm9pZCogYmFja2dyb3VuZFRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEp
CitzdGF0aWMgdm9pZCBiYWNrZ3JvdW5kVGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKIHsK
ICAgICBSZXZlcmJDb252b2x2ZXIqIHJldmVyYkNvbnZvbHZlciA9IHN0YXRpY19jYXN0PFJldmVy
YkNvbnZvbHZlcio+KHRocmVhZERhdGEpOwogICAgIHJldmVyYkNvbnZvbHZlci0+YmFja2dyb3Vu
ZFRocmVhZEVudHJ5KCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIFJldmVyYkNvbnZvbHZlcjo6UmV2
ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVy
U2xpY2VTaXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IGNvbnZvbHZlclJlbmRlclBoYXNl
LCBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzKQpAQCAtMTQyLDcgKzE0MSw3IEBAIFJldmVyYkNv
bnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcigpCiAgICAgICAgICAgICBtX2JhY2tncm91bmRUaHJl
YWRDb25kaXRpb24uc2lnbmFsKCk7CiAgICAgICAgIH0KIAotICAgICAgICB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihtX2JhY2tncm91bmRUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihtX2JhY2tncm91bmRUaHJlYWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCmlu
ZGV4IGFhOTlkZjMuLjMwODhlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3Rh
dGljIHZvaWQgZW1wdHlQZXJmb3JtKHZvaWQqKQogewogfQogCi1zdGF0aWMgdm9pZCogcnVuTG9h
ZGVyVGhyZWFkKHZvaWQqKQorc3RhdGljIHZvaWQgcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQogewog
ICAgIGxvYWRlclJ1bkxvb3BPYmplY3QgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAKQEAgLTU2
LDggKzU2LDYgQEAgc3RhdGljIHZvaWQqIHJ1bkxvYWRlclRocmVhZCh2b2lkKikKICAgICAgICAg
QXV0b2RyYWluZWRQb29sIHBvb2w7CiAgICAgICAgIHJlc3VsdCA9IENGUnVuTG9vcFJ1bkluTW9k
ZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4
KCksIHRydWUpOwogICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAm
JiByZXN1bHQgIT0ga0NGUnVuTG9vcFJ1bkZpbmlzaGVkKTsKLQotICAgIHJldHVybiAwOwogfQog
CiBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0
YWJhc2VUaHJlYWQuY3BwCmluZGV4IGNiZGUzMjQuLmQ3NzFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC04OCwxMyArODgsMTMgQEAgYm9vbCBEYXRh
YmFzZVRocmVhZDo6dGVybWluYXRpb25SZXF1ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
KiB0YXNrU3luY2hyb24KICAgICByZXR1cm4gbV9xdWV1ZS5raWxsZWQoKTsKIH0KIAotdm9pZCog
RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkU3RhcnQodm9pZCogdkRhdGFiYXNlVGhyZWFk
KQordm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKiB2RGF0YWJh
c2VUaHJlYWQpCiB7CiAgICAgRGF0YWJhc2VUaHJlYWQqIGRiVGhyZWFkID0gc3RhdGljX2Nhc3Q8
RGF0YWJhc2VUaHJlYWQqPih2RGF0YWJhc2VUaHJlYWQpOwotICAgIHJldHVybiBkYlRocmVhZC0+
ZGF0YWJhc2VUaHJlYWQoKTsKKyAgICBkYlRocmVhZC0+ZGF0YWJhc2VUaHJlYWQoKTsKIH0KIAot
dm9pZCogRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKK3ZvaWQgRGF0YWJhc2VUaHJl
YWQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFi
YXNlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRlLgpAQCAtMTM0LDggKzEzNCw2IEBAIHZvaWQq
IERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAKICAgICBpZiAoY2xlYW51cFN5bmMp
IC8vIFNvbWVvbmUgd2FudGVkIHRvIGtub3cgd2hlbiB3ZSB3ZXJlIGRvbmUgY2xlYW5pbmcgdXAu
CiAgICAgICAgIGNsZWFudXBTeW5jLT50YXNrQ29tcGxldGVkKCk7Ci0KLSAgICByZXR1cm4gMDsK
IH0KIAogdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlKiBk
YXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJl
YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCBkNDEw
ZWRiLi5mYTRmZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCkBA
IC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VUaHJlYWQoKTsK
IAotICAgIHN0YXRpYyB2b2lkKiBkYXRhYmFzZVRocmVhZFN0YXJ0KHZvaWQqKTsKLSAgICB2b2lk
KiBkYXRhYmFzZVRocmVhZCgpOworICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkU3RhcnQo
dm9pZCopOworICAgIHZvaWQgZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIE11dGV4IG1fdGhyZWFk
Q3JlYXRpb25NdXRleDsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggYmExYjBmYS4u
YThlNDRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFk
LmNwcApAQCAtNTYsMTggKzU2LDE2IEBAIGJvb2wgTG9jYWxTdG9yYWdlVGhyZWFkOjpzdGFydCgp
CiAgICAgcmV0dXJuIG1fdGhyZWFkSUQ7CiB9CiAKLXZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6
dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqIHRocmVhZCkKK3ZvaWQgTG9jYWxTdG9yYWdl
VGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCogdGhyZWFkKQogewotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxMb2NhbFN0b3JhZ2VUaHJlYWQqPih0aHJlYWQpLT50aHJlYWRFbnRy
eVBvaW50KCk7CisgICAgc3RhdGljX2Nhc3Q8TG9jYWxTdG9yYWdlVGhyZWFkKj4odGhyZWFkKS0+
dGhyZWFkRW50cnlQb2ludCgpOwogfQogCi12b2lkKiBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVh
ZEVudHJ5UG9pbnQoKQordm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQo
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIHdoaWxlIChPd25QdHI8TG9j
YWxTdG9yYWdlVGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkKICAgICAgICAg
dGFzay0+cGVyZm9ybVRhc2soKTsKLQotICAgIHJldHVybiAwOwogfQogCiB2b2lkIExvY2FsU3Rv
cmFnZVRocmVhZDo6c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8TG9jYWxTdG9yYWdlVGFzaz4gdGFz
aykKQEAgLTg1LDkgKzgzLDggQEAgdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgp
CiAgICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKLSAgICB2b2lkKiByZXR1
cm5WYWx1ZTsKICAgICBtX3F1ZXVlLmFwcGVuZChMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVUZXJt
aW5hdGUodGhpcykpOwotICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQsICZy
ZXR1cm5WYWx1ZSk7CisgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCk7CiAg
ICAgQVNTRVJUKG1fcXVldWUua2lsbGVkKCkpOwogICAgIG1fdGhyZWFkSUQgPSAwOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgKaW5kZXggNDY0NjdhZi4u
NDM0ZjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5o
CkBAIC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTG9jYWxTdG9y
YWdlVGhyZWFkKCk7CiAKICAgICAgICAgLy8gQ2FsbGVkIG9uIGJhY2tncm91bmQgdGhyZWFkLgot
ICAgICAgICBzdGF0aWMgdm9pZCogdGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqKTsKLSAg
ICAgICAgdm9pZCogdGhyZWFkRW50cnlQb2ludCgpOworICAgICAgICBzdGF0aWMgdm9pZCB0aHJl
YWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCopOworICAgICAgICB2b2lkIHRocmVhZEVudHJ5UG9p
bnQoKTsKIAogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CiAgICAgICAgIE1l
c3NhZ2VRdWV1ZTxMb2NhbFN0b3JhZ2VUYXNrPiBtX3F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGMyNjgyNDMuLmYwMGJkMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTQ5
LDggKzQ5LDcgQEAgQXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2RlcigpCiAgICAg
bV9xdWV1ZS5raWxsKCk7CiAgICAgCiAgICAgLy8gU3RvcCB0aHJlYWQuCi0gICAgdm9pZCogZXhp
dENvZGU7Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCwgJmV4aXRDb2Rl
KTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElEKTsKICAgICBtX3RocmVh
ZElEID0gMDsKIH0KIApAQCAtNjYsMTIgKzY1LDExIEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OmRlY29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBh
CiB9CiAKIC8vIEFzeW5jaHJvbm91c2x5IGRlY29kZSBpbiB0aGlzIHRocmVhZC4KLXZvaWQqIEFz
eW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQordm9pZCBBc3lu
Y0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKIHsKICAgICBBU1NF
UlQodGhyZWFkRGF0YSk7CiAgICAgQXN5bmNBdWRpb0RlY29kZXIqIGRlY29kZXIgPSByZWludGVy
cHJldF9jYXN0PEFzeW5jQXVkaW9EZWNvZGVyKj4odGhyZWFkRGF0YSk7CiAgICAgZGVjb2Rlci0+
cnVuTG9vcCgpOwotICAgIHJldHVybiAwOwogfQogCiB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpy
dW5Mb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9E
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmlu
ZGV4IGUyZmM0ZGMuLmNlZDgwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNB
dWRpb0RlY29kZXIuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fYXVkaW9CdWZmZXI7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgdm9p
ZCogdGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSk7CisgICAgc3RhdGljIHZvaWQgdGhyZWFk
RW50cnkodm9pZCogdGhyZWFkRGF0YSk7CiAgICAgdm9pZCBydW5Mb29wKCk7CiAKICAgICBXVEY6
OlRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDE5OGE1MDIu
LmFlYmQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fcmVuZGVyVGhyZWFkKSB7Ci0gICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KG1fcmVuZGVyVGhyZWFkLCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9y
ZW5kZXJUaHJlYWQpOwogICAgICAgICBtX3JlbmRlclRocmVhZCA9IDA7CiAgICAgfQogCkBAIC05
MiwxMyArOTIsMTEgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVu
ZGVyaW5nKCkKIH0KIAogLy8gRG8gb2ZmbGluZSByZW5kZXJpbmcgaW4gdGhpcyB0aHJlYWQuCi12
b2lkKiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlckVudHJ5KHZvaWQqIHRocmVh
ZERhdGEpCit2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyRW50cnkodm9p
ZCogdGhyZWFkRGF0YSkKIHsKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3Rp
bmF0aW9uTm9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
Kj4odGhyZWFkRGF0YSk7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uTm9kZSk7CiAgICAgZGVzdGlu
YXRpb25Ob2RlLT5yZW5kZXIoKTsKLSAgICAKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGM0ZDU2N2Eu
LjdiY2I5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8g
UmVuZGVyaW5nIHRocmVhZC4KICAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fcmVuZGVy
VGhyZWFkOwogICAgIGJvb2wgbV9zdGFydGVkUmVuZGVyaW5nOwotICAgIHN0YXRpYyB2b2lkKiBy
ZW5kZXJFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJFbnRy
eSh2b2lkKiB0aHJlYWREYXRhKTsKICAgICB2b2lkIHJlbmRlcigpOwogICAgIAogICAgIC8vIEZv
ciBjb21wbGV0aW9uIGNhbGxiYWNrIG9uIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDkzYmEwYmYuLjM0Y2Y5MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEyMywxMiArMTIzLDEyIEBAIGJvb2wgV29y
a2VyVGhyZWFkOjpzdGFydCgpCiAgICAgcmV0dXJuIG1fdGhyZWFkSUQ7CiB9CiAKLXZvaWQqIFdv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQordm9pZCBXb3JrZXJU
aHJlYWQ6OndvcmtlclRocmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V29ya2VyVGhyZWFkKj4odGhyZWFkKS0+d29ya2VyVGhyZWFkKCk7CisgICAgc3Rh
dGljX2Nhc3Q8V29ya2VyVGhyZWFkKj4odGhyZWFkKS0+d29ya2VyVGhyZWFkKCk7CiB9CiAKLXZv
aWQqIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKK3ZvaWQgV29ya2VyVGhyZWFkOjp3b3Jr
ZXJUaHJlYWQoKQogewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENy
ZWF0aW9uTXV0ZXgpOwpAQCAtMTczLDggKzE3Myw2IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkKIAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBhbHJlYWR5IGRl
c3Ryb3llZCBmcm9tIG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nlc3MgInRoaXMi
LgogICAgIGRldGFjaFRocmVhZCh0aHJlYWRJRCk7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogdm9p
ZCBXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuaAppbmRleCA2NjQ2YjExLi5lM2ExMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyVGhyZWFkLmgKQEAgLTgwLDggKzgwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgLy8gU3RhdGljIGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRoZSBjb3Jl
IHJvdXRpbmUgb24gdGhlIG5ldyB0aHJlYWQuIFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBXb3JrZXJU
aHJlYWQgb2JqZWN0LgotICAgICAgICBzdGF0aWMgdm9pZCogd29ya2VyVGhyZWFkU3RhcnQodm9p
ZCopOwotICAgICAgICB2b2lkKiB3b3JrZXJUaHJlYWQoKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
d29ya2VyVGhyZWFkU3RhcnQodm9pZCopOworICAgICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwog
CiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICAgICAgV29ya2VyUnVu
TG9vcCBtX3J1bkxvb3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJkYjMxOC4uNTdmNjY3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIg
IDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0
ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBh
cmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVk
IGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAg
ICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0
IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0
aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGln
bm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMg
dGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBp
bnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcK
KyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFs
bCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKwor
ICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5k
IHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAg
ICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5
IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBXZWJLaXQu
dmNwcm9qL1dlYktpdF9DYWlyby5kZWY6IEFkZCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAg
KiBXZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWY6IERpdHRvLgorCiAyMDEyLTAy
LTA3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2VtZW50IHRleHQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmcm9tIHRoZSBtYXJrZXIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYKaW5kZXggODli
MGEyYS4uZTRjZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJv
ai9XZWJLaXRfQ2Fpcm8uZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ov
V2ViS2l0X0NhaXJvLmRlZgpAQCAtMTIyLDYgKzEyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jy
b2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5U
aHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlB
SVA2QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFY
QFowUEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0
YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZA
QFlBWFhaCkBAIC0xMzksNSArMTQwLDYgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQXRvbWlj
YWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/dXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAg
ICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JU
aHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBX
VEZAQFlBSVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWYgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWYKaW5kZXggMWIxYjcyZC4uZTRhYzExOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm9f
ZGVidWcuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0Nh
aXJvX2RlYnVnLmRlZgpAQCAtMTIyLDYgKzEyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2Fk
Y2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJl
YWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFow
UEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNo
VGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlB
WFhaCkBAIC0xMzksNSArMTQwLDYgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/
d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJl
YWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZA
QFlBSVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzJkNDZiZS4uODhlZGJjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIgIDxrYWxldmxl
bWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJzIGZyb20g
V1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBhcmFtICd2b2lk
ICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVkIGJ5IFRocmVh
ZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAgICAgVGhyZWFk
aW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0IGluLiBUaGlz
IGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0aGUgY2xpZW50
IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGlnbm9yZWQgaXQu
CisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHNpZ25h
dHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBpbnN0ZWFkIG9m
IHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcKKyAgICAgICAg
cGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFsbCBjbGllbnQg
Y29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKworICAgICAgICBB
cyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVjdHMgaW50ZXJu
YWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5kIHdlJ2xsIG5l
ZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAgICAgIGNvbXBh
dGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5IHdyYXBwZXJz
IHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVl
dWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6CisgICAgICAgICogUGxhdGZvcm0vZ3RrL1dvcmtR
dWV1ZUd0ay5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5jaGVyTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp3ZWJUaHJlYWRCb2R5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1
bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OndlYlRocmVh
ZEJvZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vVGhyZWFkTGF1bmNoZXJX
aW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJUaHJlYWRCb2R5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpyYW5kb21DcmFzaFRocmVh
ZCk6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZM
aXRlLmRlZjoKKwogMjAxMi0wMi0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApp
bmRleCA1ODdlZjg5Li43YjRhZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApA
QCAtMTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgUVRocmVhZCogbV93b3JrVGhyZWFkOwog
ICAgIGZyaWVuZCBjbGFzcyBXb3JrSXRlbVF0OwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0
YXRpYyB2b2lkKiBzdGFydFdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICBzdGF0aWMg
dm9pZCBzdGFydFdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKICAgICB2b2lkIHdvcmtRdWV1
ZVRocmVhZEJvZHkoKTsKICAgICB2b2lkIGRpc3BhdGNoT25Tb3VyY2UoR1NvdXJjZSosIGNvbnN0
IEZ1bmN0aW9uPHZvaWQoKT4mLCBHU291cmNlRnVuYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKaW5kZXggMTEyYmEyOC4uZjBjMTFmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKQEAgLTE0MiwxMCAr
MTQyLDkgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgfQogfQog
Ci12b2lkKiBXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1
ZXVlKQordm9pZCBXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29y
a1F1ZXVlKQogewogICAgIHdvcmtRdWV1ZS0+d29ya1F1ZXVlVGhyZWFkQm9keSgpOwotICAgIHJl
dHVybiAwOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkQm9keSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5j
aGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9UaHJlYWRM
YXVuY2hlck1hYy5tbQppbmRleCBkZDUzYjNlLi43YzAxMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5jaGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvVGhyZWFkTGF1bmNoZXJNYWMu
bW0KQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1zdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQor
c3RhdGljIHZvaWQgd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQogewogICAgIG1hY2hfcG9y
dF90IHNlcnZlclBvcnQgPSBzdGF0aWNfY2FzdDxtYWNoX3BvcnRfdD4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKIApAQCAtNTIsOCArNTIsNiBAQCBzdGF0aWMgdm9pZCog
d2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQogICAgIFtwb29sIGRyYWluXTsKIAogICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS0+cnVuKCk7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBUaHJlYWRMYXVuY2hlcjo6Y3JlYXRlV2ViVGhyZWFkKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9UaHJlYWRM
YXVuY2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9UaHJl
YWRMYXVuY2hlclF0LmNwcAppbmRleCAxZDBjYWYzLi4zN2QwNDVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1RocmVhZExhdW5jaGVyUXQu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQqIHdlYlRocmVhZEJvZHkodm9pZCogLyogY29udGV4
dCAqLykKK3N0YXRpYyB2b2lkIHdlYlRocmVhZEJvZHkodm9pZCogLyogY29udGV4dCAqLykKIHsK
ICAgICAvLyBJbml0aWFsaXphdGlvbgogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpA
QCAtNTcsOCArNTcsNiBAQCBzdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiAvKiBjb250
ZXh0ICovKQogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZSgtMSwgUnVuTG9v
cDo6Y3VycmVudCgpKTsKICAgICBSdW5Mb29wOjpydW4oKTsKLQotICAgIHJldHVybiAwOwogfQog
CiBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIFRocmVhZExhdW5jaGVyOjpjcmVhdGVX
ZWJUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L3dpbi9UaHJlYWRMYXVuY2hlcldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvd2luL1RocmVhZExhdW5jaGVyV2luLmNwcAppbmRleCBmOWQxYzA0Li41YWJlYzdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1RocmVhZExh
dW5jaGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2lu
L1RocmVhZExhdW5jaGVyV2luLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkKiB3ZWJUaHJlYWRC
b2R5KHZvaWQqIGNvbnRleHQpCitzdGF0aWMgdm9pZCB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNvbnRl
eHQpCiB7CiAgICAgSEFORExFIGNsaWVudElkZW50aWZpZXIgPSByZWludGVycHJldF9jYXN0PEhB
TkRMRT4oY29udGV4dCk7CiAKQEAgLTQ2LDggKzQ2LDYgQEAgc3RhdGljIHZvaWQqIHdlYlRocmVh
ZEJvZHkodm9pZCogY29udGV4dCkKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxp
emUoY2xpZW50SWRlbnRpZmllciwgUnVuTG9vcDo6Y3VycmVudCgpKTsKICAgICBSdW5Mb29wOjpy
dW4oKTsKLQotICAgIHJldHVybiAwOwogfQogCiBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyIFRocmVhZExhdW5jaGVyOjpjcmVhdGVXZWJUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDA5ODEwNy4uMmNmMmFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGlj
IHZvaWQgc2xlZXAodW5zaWduZWQgc2Vjb25kcykKIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCog
cmFuZG9tQ3Jhc2hUaHJlYWQodm9pZCopCitzdGF0aWMgdm9pZCByYW5kb21DcmFzaFRocmVhZCh2
b2lkKikKIHsKICAgICAvLyBUaGlzIGRlbGF5IHdhcyBjaG9zZW4gc2VtaS1hcmJpdHJhcmlseS4g
V2Ugd2FudCB0aGUgY3Jhc2ggdG8gaGFwcGVuIHNvbWV3aGF0IHF1aWNrbHkgdG8KICAgICAvLyBl
bmFibGUgdXNlZnVsIHN0cmVzcyB0ZXN0aW5nLCBidXQgbm90IHNvIHF1aWNrbHkgdGhhdCB0aGUg
d2ViIHByb2Nlc3Mgd2lsbCBhbHdheXMgY3Jhc2ggc29vbgpAQCAtMTA5LDcgKzEwOSw2IEBAIHN0
YXRpYyB2b2lkKiByYW5kb21DcmFzaFRocmVhZCh2b2lkKikKIAogICAgIHNsZWVwKHJhbmRvbU51
bWJlcigpICogbWF4aW11bVJhbmRvbUNyYXNoRGVsYXkpOwogICAgIENSQVNIKCk7Ci0gICAgcmV0
dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHN0YXJ0UmFuZG9tQ3Jhc2hUaHJlYWRJZlJlcXVlc3Rl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggNzY4MzBlMC4uODRmY2QyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZgpAQCAtMTE2LDYgKzExNiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2Fk
Y2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJl
YWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFow
UEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNo
VGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlB
WFhaCkBAIC0xMzEsNiArMTMyLDcgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQE11dGV4QFdU
RkBAUUFFWFhaCiAgICAgICAgID91bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRl
eEBXVEZAQFlBWFhaCiAgICAgICAgID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZN
dXRleEAyQEBaCisgICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElAWgog
ICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgICAg
ICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICAgICAgOyBSZS1leHBv
cnRzIGZyb20gV2ViQ29yZSBmb3IgdGVzdCBoYXJuZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgppbmRleCAzYTkyN2MyLi4wNTE3ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCkBAIC0xMDksNiArMTA5LDcgQEAgRVhQT1JUUwogICAgICAgICA/YnJvYWRj
YXN0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/Y2FsbE9uTWFpblRocmVh
ZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZB
UEFYUEFYQFowUEJEQFoKKyAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQ
QkRAWgogICAgICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCiAgICAgICAgID9kZXRhY2hU
aHJlYWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFkQFdURkBAWUFY
WFoKQEAgLTEyNCw2ICsxMjUsNyBAQCBFWFBPUlRTCiAgICAgICAgID91bmxvY2tATXV0ZXhAV1RG
QEBRQUVYWFoKICAgICAgICAgP3VubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4
QFdURkBAWUFYWFoKICAgICAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11
dGV4QDJAQFoKKyAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISUBaCiAg
ICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQQVBBWEBaCiAgICAgICAg
ID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBAWgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127165</attachid>
            <date>2012-02-15 04:58:01 -0800</date>
            <delta_ts>2012-02-17 08:25:15 -0800</delta_ts>
            <desc>Patch v4</desc>
            <filename>wtf_threading_api4.patch</filename>
            <type>text/plain</type>
            <size>54472</size>
            <attacher name="Kalev Lember">kalevlember</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEyZmJjNDAuLjMxNWViZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIg
IDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0
ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBh
cmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVk
IGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAg
ICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0
IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0
aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGln
bm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMg
dGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBp
bnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcK
KyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFs
bCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKwor
ICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5k
IHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAg
ICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5
IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9v
bC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmMpOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1RocmVhZDo6c3RvcCk6CisgICAgICAgICogYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmg6CisgICAgICAgIChTYW1wbGluZ1RocmVhZCk6CisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6fkhlYXApOgorICAgICAgICAoSlNDOjpI
ZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmMpOgorICAgICAgICAqIGhlYXAvSGVhcC5o
OgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
VGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVhZFN0YXJ0RnVuYyk6CisgICAgICAgIChKU0M6
Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6On5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKToK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoTWFya1N0YWNrVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAg
ICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQp
OgorICAgICAgICAqIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgIChUaHJlYWRQ
cml2YXRlKToKKyAgICAgICAgKiB3dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmg6IFVwZGF0
ZSB0aGUgc2lnbmF0dXJlIG9mCisgICAgICAgIFRocmVhZEZ1bmN0aW9uLgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6dGhyZWFkRW50
cnlQb2ludCk6IFVwZGF0ZSBmb3IgVGhyZWFkRnVuY3Rpb24gc2lnbmF0dXJlIGNoYW5nZS4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OkNvbXBhdEludm9jYXRpb246OkNvbXBhdEludm9j
YXRpb24pOiBDb21wYXQgZnVuY3Rpb24gZm9yIFNhZmFyaS4KKyAgICAgICAgKENvbXBhdEludm9j
YXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdURjo6Y29tcGF0RW50cnlQb2ludCk6IERpdHRvLgor
ICAgICAgICAoV1RGOjpjcmVhdGVUaHJlYWQpOiBEaXR0by4KKyAgICAgICAgKFdURjo6d2FpdEZv
clRocmVhZENvbXBsZXRpb24pOiBEaXR0by4KKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IFVw
ZGF0ZSB0aGUgc2lnbmF0dXJlIG9mIFRocmVhZEZ1bmN0aW9uIGFuZAorICAgICAgICB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbi4KKyAgICAgICAgKFdURik6CisgICAgICAgICogd3RmL1RocmVhZGlu
Z1B0aHJlYWRzLmNwcDogSW1wbGVtZW50IHRoZSBuZXcgQVBJLgorICAgICAgICAoV1RGOjp3dGZU
aHJlYWRFbnRyeVBvaW50KToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6OmNyZWF0ZVRo
cmVhZEludGVybmFsKToKKyAgICAgICAgKFdURjo6d2FpdEZvclRocmVhZENvbXBsZXRpb24pOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRpbmdXaW4uY3BwOiBJbXBsZW1lbnQgdGhlIG5ldyBBUEkuCisg
ICAgICAgIChXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQpOgorICAgICAgICAoV1RGOjp3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbik6CisKIDIwMTItMDItMTMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG9ic29sZXRlICNpZiBmcm9tIFRocmVh
ZFNwZWNpZmljLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5vcmRlciBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgpp
bmRleCA2ZmJjYTdmLi5lMWUxZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUub3JkZXIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLm9yZGVyCkBAIC01OCw2ICs1OCw3IEBAIF9fWk4zV1RGNU11dGV4NnVubG9ja0V2CiBf
X1pOM1dURjEwU3RyaW5nSW1wbDEyc2hhcmVkQnVmZmVyRXYKIF9fWk4zV1RGMTBTdHJpbmdJbXBs
OGVuZHNXaXRoRVBTMF9iCiBfX1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGUHZTMF9FUzBfUEtjCitf
X1pOM1dURjEyY3JlYXRlVGhyZWFkRVBGdlB2RVMwX1BLYwogX19aTjNXVEYyMGNyZWF0ZVRocmVh
ZEludGVybmFsRVBGUHZTMF9FUzBfUEtjCiBfX1pOM1dURkwzNWVzdGFibGlzaElkZW50aWZpZXJG
b3JQdGhyZWFkSGFuZGxlRVJLUDE3X29wYXF1ZV9wdGhyZWFkX3QKIF9fWk4zV1RGOUhhc2hUYWJs
ZUlqU3Q0cGFpcklqUDE3X29wYXF1ZV9wdGhyZWFkX3RFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJ
UzRfRUVOU183SW50SGFzaElqRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lq
RUVOU0FfSVMzX0VFRUVTQl9FNnJlaGFzaEVpCkBAIC0xMTUzLDYgKzExNTQsNyBAQCBfX1pOM1dU
RjEwZmFzdFN0ckR1cEVQS2MKIF9fWk4zSlNDMTBJZGVudGlmaWVyMTFhZGRTbG93Q2FzZUVQTlNf
MTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRQogX0pTU3RyaW5nUmV0YWluCiBfX19p
bml0aWFsaXplU2NhdmVuZ2VyX2Jsb2NrX2ludm9rZV8xCitfX1pOM1dURjIzd2FpdEZvclRocmVh
ZENvbXBsZXRpb25FagogX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uRWpQUHYKIF9K
U09iamVjdENvcHlQcm9wZXJ0eU5hbWVzCiBfX1pOM0pTQzhKU09iamVjdDE2Z2V0UHJvcGVydHlO
YW1lc0VQTlNfOUV4ZWNTdGF0ZUVSTlNfMTdQcm9wZXJ0eU5hbWVBcnJheUVOU18xNUVudW1lcmF0
aW9uTW9kZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKaW5kZXggNjMwZjZiYzAuLmJjNjFjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0xMjIsNiArMTIyLDcgQEAg
RVhQT1JUUwogICAgID9jcmVhdGVUYWJsZUBIYXNoVGFibGVASlNDQEBBQkVYUEFWSlNHbG9iYWxE
YXRhQDJAQFoKICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICA/
Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowUEJEQFoKKyAgICA/Y3JlYXRlVGhyZWFk
QFdURkBAWUFJUDZBWFBBWEBaMFBCREBaCiAgICAgP2NyZWF0ZVR5cGVFcnJvckBKU0NAQFlBUEFW
SlNPYmplY3RAMUBQQVZFeGVjU3RhdGVAMUBBQlZVU3RyaW5nQDFAQFoKICAgICA/Y3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXJAV1RGQEBZQUlYWgogICAgID9jcnlwdG9ncmFwaGljYWxseVJh
bmRvbVZhbHVlc0BXVEZAQFlBWFBBWElAWgpAQCAtMzYyLDYgKzM2Myw3IEBAIEVYUE9SVFMKICAg
ICA/dmlzaXRDaGlsZHJlbkBKU0dsb2JhbFRoaXNASlNDQEBLQVhQQVZKU0NlbGxAMkBBQVZTbG90
VmlzaXRvckAyQEBaCiAgICAgP3Zpc2l0Q2hpbGRyZW5ASlNPYmplY3RASlNDQEBTQVhQQVZKU0Nl
bGxAMkBBQVZTbG90VmlzaXRvckAyQEBaCiAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBA
UUFFWEFBVk11dGV4QDJAQFoKKyAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJ
QFoKICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgID93
cml0YWJsZUBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAgICAgP3dyaXRlQmFycmll
ckBIYW5kbGVIZWFwQEpTQ0BAUUFFWFBBVkpTVmFsdWVAMkBBQlYzMkBAWgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcAppbmRleCA2NDMxMzE5Li4w
NzdmMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxp
bmdUb29sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdU
b29sLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2FtcGxpbmdUaHJlYWQ6OnNfcnVubmlu
ZyA9IGZhbHNlOwogdW5zaWduZWQgU2FtcGxpbmdUaHJlYWQ6OnNfaGVydHogPSAxMDAwMDsKIFRo
cmVhZElkZW50aWZpZXIgU2FtcGxpbmdUaHJlYWQ6OnNfc2FtcGxpbmdUaHJlYWQ7CiAKLXZvaWQq
IFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCit2b2lkIFNhbXBsaW5nVGhy
ZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCiB7CiAgICAgd2hpbGUgKHNfcnVubmluZykgewog
ICAgICAgICBzbGVlcEZvck1pY3Jvc2Vjb25kcyhoZXJ0ejJ1cyhzX2hlcnR6KSk7CkBAIC0yMjUs
OCArMjI1LDYgQEAgdm9pZCogU2FtcGxpbmdUaHJlYWQ6OnRocmVhZFN0YXJ0RnVuYyh2b2lkKikK
ICAgICAgICAgU2FtcGxpbmdUb29sOjpzYW1wbGUoKTsKICNlbmRpZgogICAgIH0KLQotICAgIHJl
dHVybiAwOwogfQogCiAKQEAgLTI0Myw3ICsyNDEsNyBAQCB2b2lkIFNhbXBsaW5nVGhyZWFkOjpz
dG9wKCkKIHsKICAgICBBU1NFUlQoc19ydW5uaW5nKTsKICAgICBzX3J1bm5pbmcgPSBmYWxzZTsK
LSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkLCAwKTsKKyAgICB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihzX3NhbXBsaW5nVGhyZWFkKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggMzJhNDRhZC4u
MjhmZDUyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBs
aW5nVG9vbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rv
b2wuaApAQCAtMjIzLDcgKzIyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBzdGFydCh1bnNpZ25lZCBoZXJ0ej0xMDAwMCk7CiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHN0b3AoKTsKIAotICAgICAgICBzdGF0
aWMgdm9pZCogdGhyZWFkU3RhcnRGdW5jKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgdGhy
ZWFkU3RhcnRGdW5jKHZvaWQqKTsKICAgICB9OwogCiAgICAgY2xhc3MgU2FtcGxpbmdUb29sIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggOGUxMGJkNS4uNGUxMzA0NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBIZWFwOjp+
SGVhcCgpCiAgICAgICAgIG1fYmxvY2tGcmVlaW5nVGhyZWFkU2hvdWxkUXVpdCA9IHRydWU7CiAg
ICAgICAgIG1fZnJlZUJsb2NrQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KLSAgICB3YWl0
Rm9yVGhyZWFkQ29tcGxldGlvbihtX2Jsb2NrRnJlZWluZ1RocmVhZCwgMCk7CisgICAgd2FpdEZv
clRocmVhZENvbXBsZXRpb24obV9ibG9ja0ZyZWVpbmdUaHJlYWQpOwogCiAgICAgLy8gVGhlIGRl
c3Ryb3kgZnVuY3Rpb24gbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBjYWxsZWQsIHNvIGFzc2VydCB0
aGlzLgogICAgIEFTU0VSVCghbV9nbG9iYWxEYXRhKTsKQEAgLTQwNywxMCArNDA3LDkgQEAgdm9p
ZCBIZWFwOjp3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSkKICAgICB3YWl0Rm9y
UmVsYXRpdmVUaW1lV2hpbGVIb2xkaW5nTG9jayhyZWxhdGl2ZSk7CiB9CiAKLXZvaWQqIEhlYXA6
OmJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKQordm9pZCBIZWFwOjpibG9j
a0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCkKIHsKICAgICBzdGF0aWNfY2FzdDxI
ZWFwKj4oaGVhcCktPmJsb2NrRnJlZWluZ1RocmVhZE1haW4oKTsKLSAgICByZXR1cm4gMDsKIH0K
IAogdm9pZCBIZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRNYWluKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAppbmRleCA4N2EyMGEwLi5iYWMwODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCkBAIC0xODcsNyArMTg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgd2Fp
dEZvclJlbGF0aXZlVGltZVdoaWxlSG9sZGluZ0xvY2soZG91YmxlIHJlbGF0aXZlKTsKICAgICAg
ICAgdm9pZCB3YWl0Rm9yUmVsYXRpdmVUaW1lKGRvdWJsZSByZWxhdGl2ZSk7CiAgICAgICAgIHZv
aWQgYmxvY2tGcmVlaW5nVGhyZWFkTWFpbigpOwotICAgICAgICBzdGF0aWMgdm9pZCogYmxvY2tG
cmVlaW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIGhlYXApOworICAgICAgICBzdGF0aWMgdm9pZCBi
bG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCk7CiAgICAgICAgIAogICAgICAg
ICBjb25zdCBIZWFwU2l6ZSBtX2hlYXBTaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9taW5C
eXRlc1BlckN5Y2xlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKaW5k
ZXggOWEzMDkyMy4uMTNkMzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suY3BwCkBAIC0yMjYsMTAgKzIyNiw5IEBAIHZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0
YTo6bWFya2luZ1RocmVhZE1haW4oKQogICAgIHNsb3RWaXNpdG9yLmRyYWluRnJvbVNoYXJlZChT
bG90VmlzaXRvcjo6U2xhdmVEcmFpbik7CiB9CiAKLXZvaWQqIE1hcmtTdGFja1RocmVhZFNoYXJl
ZERhdGE6Om1hcmtpbmdUaHJlYWRTdGFydEZ1bmModm9pZCogc2hhcmVkKQordm9pZCBNYXJrU3Rh
Y2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhyZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkK
IHsKICAgICBzdGF0aWNfY2FzdDxNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKj4oc2hhcmVkKS0+
bWFya2luZ1RocmVhZE1haW4oKTsKLSAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCkBAIC0yNTgs
NyArMjU3LDcgQEAgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YTo6fk1hcmtTdGFja1RocmVhZFNo
YXJlZERhdGEoKQogICAgICAgICBtX21hcmtpbmdDb25kaXRpb24uYnJvYWRjYXN0KCk7CiAgICAg
fQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX21hcmtpbmdUaHJlYWRzLnNpemUoKTsg
KytpKQotICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX21hcmtpbmdUaHJlYWRzW2ld
LCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9tYXJraW5nVGhyZWFkc1tp
XSk7CiAjZW5kaWYKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgK
aW5kZXggNjkyM2NkZC4uMzAxOTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShQ
QVJBTExFTF9HQykKICAgICAgICAgdm9pZCBtYXJraW5nVGhyZWFkTWFpbigpOwotICAgICAgICBz
dGF0aWMgdm9pZCogbWFya2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgbWFya2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBoZWFwKTsKICNlbmRpZgog
CiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggZmQ1YjFmOC4uMmNj
MGJjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNH
ZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dl
bmVyaWMuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpU
aHJlYWRQcml2YXRlOjp3YWl0Rm9yRmluaXNoKCkKICAgICAgICAgbV90aHJlYWRDb25kaXRpb24u
d2FpdChtX211dGV4KTsKIH0KIAotdm9pZCogUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJp
dmF0ZTo6d29ya2VyVGhyZWFkKHZvaWQqIHRocmVhZERhdGEpCit2b2lkIFBhcmFsbGVsRW52aXJv
bm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCh2b2lkKiB0aHJlYWREYXRhKQogewog
ICAgIFRocmVhZFByaXZhdGUqIHNoYXJlZFRocmVhZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGhyZWFk
UHJpdmF0ZSo+KHRocmVhZERhdGEpOwogICAgIE11dGV4TG9ja2VyIGxvY2soc2hhcmVkVGhyZWFk
LT5tX211dGV4KTsKQEAgLTEzNiw3ICsxMzYsNiBAQCB2b2lkKiBQYXJhbGxlbEVudmlyb25tZW50
OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQodm9pZCogdGhyZWFkRGF0YSkKIAogICAgICAg
ICBzaGFyZWRUaHJlYWQtPm1fdGhyZWFkQ29uZGl0aW9uLndhaXQoc2hhcmVkVGhyZWFkLT5tX211
dGV4KTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaAppbmRleCAx
YzdkNjNjLi42ZGU3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bh
cmFsbGVsSm9ic0dlbmVyaWMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BhcmFs
bGVsSm9ic0dlbmVyaWMuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFRocmVhZFByaXZhdGUoKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgdm9pZCogd29ya2VyVGhyZWFkKHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQg
d29ya2VyVGhyZWFkKHZvaWQqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFRocmVhZElkZW50
aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZEZ1bmN0aW9uSW52b2NhdGlvbi5oCmluZGV4IGYxZTE0NzIuLjJkODU5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRGdW5jdGlvbkludm9jYXRpb24u
aApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdHlwZWRlZiB2b2lkKiAo
KlRocmVhZEZ1bmN0aW9uKSh2b2lkKiBhcmd1bWVudCk7Cit0eXBlZGVmIHZvaWQgKCpUaHJlYWRG
dW5jdGlvbikodm9pZCogYXJndW1lbnQpOwogCiBzdHJ1Y3QgVGhyZWFkRnVuY3Rpb25JbnZvY2F0
aW9uIHsKICAgICBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24oVGhyZWFkRnVuY3Rpb24gZnVuY3Rp
b24sIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKaW5k
ZXggZDhkYmJhZS4uYzM4ZGZhMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9UaHJlYWRpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5n
LmNwcApAQCAtMjUsNiArMjUsOCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
VGhyZWFkaW5nLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtNDcsNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgTXV0ZXggY3JlYXRpb25NdXRleDsKIH07CiAKLXN0YXRpYyB2b2lkKiB0aHJlYWRF
bnRyeVBvaW50KHZvaWQqIGNvbnRleHREYXRhKQorc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2lu
dCh2b2lkKiBjb250ZXh0RGF0YSkKIHsKICAgICBOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0ID0g
cmVpbnRlcnByZXRfY2FzdDxOZXdUaHJlYWRDb250ZXh0Kj4oY29udGV4dERhdGEpOwogCkBAIC02
NCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KHZvaWQqIGNvbnRleHRE
YXRhKQogICAgIHZvaWQqIGRhdGEgPSBjb250ZXh0LT5kYXRhOwogICAgIGRlbGV0ZSBjb250ZXh0
OwogCi0gICAgcmV0dXJuIGVudHJ5UG9pbnQoZGF0YSk7CisgICAgZW50cnlQb2ludChkYXRhKTsK
IH0KIAogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQ
b2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogbmFtZSkKQEAgLTg2LDE0ICs4OCw2NSBAQCBU
aHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2
b2lkKiBkYXRhLCBjb25zdCBjaGFyKgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShX
SU4pCiAKKy8vIEZvciBBQkkgY29tcGF0aWJpbGl0eSB3aXRoIFNhZmFyaSBvbiBNYWMgLyBXaW5k
b3dzOiBTYWZhcmkgdXNlcyB0aGUgcHJpdmF0ZQorLy8gY3JlYXRlVGhyZWFkKCkgYW5kIHdhaXRG
b3JUaHJlYWRDb21wbGV0aW9uKCkgZnVuY3Rpb25zIGRpcmVjdGx5IGFuZCB3ZSBuZWVkCisvLyB0
byBrZWVwIHRoZSBvbGQgQUJJIGNvbXBhdGliaWxpdHkgdW50aWwgaXQncyBiZWVuIHJlYnVpbHQu
CisKK3R5cGVkZWYgdm9pZCogKCpDb21wYXRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOworCitX
VEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoQ29tcGF0RnVu
Y3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogbmFtZSk7CisKK3N0cnVj
dCBDb21wYXRJbnZvY2F0aW9uIHsKKyAgICBDb21wYXRJbnZvY2F0aW9uKENvbXBhdEZ1bmN0aW9u
IGZ1bmN0aW9uLCB2b2lkKiBkYXRhKQorICAgICAgICA6IGZ1bmN0aW9uKGZ1bmN0aW9uKQorICAg
ICAgICAsIGRhdGEoZGF0YSkKKyAgICB7CisgICAgfQorCisgICAgQ29tcGF0RnVuY3Rpb24gZnVu
Y3Rpb247CisgICAgdm9pZCogZGF0YTsKK307CisKK3N0YXRpYyB2b2lkIGNvbXBhdEVudHJ5UG9p
bnQodm9pZCogcGFyYW0pCit7CisgICAgT3duUHRyPENvbXBhdEludm9jYXRpb24+IGludm9jYXRp
b24gPSBhZG9wdFB0cihzdGF0aWNfY2FzdDxDb21wYXRJbnZvY2F0aW9uKj4ocGFyYW0pKTsKKyAg
ICBpbnZvY2F0aW9uLT5mdW5jdGlvbihpbnZvY2F0aW9uLT5kYXRhKTsKK30KKworVGhyZWFkSWRl
bnRpZmllciBjcmVhdGVUaHJlYWQoQ29tcGF0RnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0
YSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBPd25QdHI8Q29tcGF0SW52b2NhdGlvbj4gaW52
b2NhdGlvbiA9IGFkb3B0UHRyKG5ldyBDb21wYXRJbnZvY2F0aW9uKGVudHJ5UG9pbnQsIGRhdGEp
KTsKKyAgICBUaHJlYWRJZGVudGlmaWVyIGlkID0gY3JlYXRlVGhyZWFkKGNvbXBhdEVudHJ5UG9p
bnQsIGludm9jYXRpb24uZ2V0KCksIG5hbWUpOworCisgICAgLy8gVGhlIHRocmVhZCB3aWxsIHRh
a2Ugb3duZXJzaGlwIG9mIGludm9jYXRpb24uCisgICAgaWYgKCFpbnZvY2F0aW9uLmxlYWtQdHIo
KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK1dURl9FWFBPUlRf
UFJJVkFURSBpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9p
ZCoqKTsKKworaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhy
ZWFkSUQsIHZvaWQqKikKK3sKKyAgICByZXR1cm4gd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhy
ZWFkSUQpOworfQorCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYnV0IG5lZWRzIHRv
IGJlIGtlcHQgYXJvdW5kIGZvciBiYWNrd2FyZAogLy8gY29tcGF0aWJpbGl0eS4gVXNlIHRoZSAz
LWFyZ3VtZW50IHZlcnNpb24gb2YgY3JlYXRlVGhyZWFkIGFib3ZlLgogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQ
b2ludCwgdm9pZCogZGF0YSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWQoQ29tcGF0RnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSk7CiAKLVRo
cmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZv
aWQqIGRhdGEpCitUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChDb21wYXRGdW5jdGlvbiBl
bnRyeVBvaW50LCB2b2lkKiBkYXRhKQogewotICAgIHJldHVybiBjcmVhdGVUaHJlYWQoZW50cnlQ
b2ludCwgZGF0YSwgMCk7CisgICAgT3duUHRyPENvbXBhdEludm9jYXRpb24+IGludm9jYXRpb24g
PSBhZG9wdFB0cihuZXcgQ29tcGF0SW52b2NhdGlvbihlbnRyeVBvaW50LCBkYXRhKSk7CisgICAg
VGhyZWFkSWRlbnRpZmllciBpZCA9IGNyZWF0ZVRocmVhZChjb21wYXRFbnRyeVBvaW50LCBpbnZv
Y2F0aW9uLmdldCgpLCAwKTsKKworICAgIC8vIFRoZSB0aHJlYWQgd2lsbCB0YWtlIG93bmVyc2hp
cCBvZiBpbnZvY2F0aW9uLgorICAgIGlmICghaW52b2NhdGlvbi5sZWFrUHRyKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIGlkOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1RocmVhZGluZy5oCmluZGV4IDFkZWU1ZGEuLmI1ZDQzMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaApAQCAtNzgsNyArNzgsNyBAQAogbmFtZXNwYWNlIFdURiB7
CiAKIHR5cGVkZWYgdWludDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKLXR5cGVkZWYgdm9pZCogKCpU
aHJlYWRGdW5jdGlvbikodm9pZCogYXJndW1lbnQpOwordHlwZWRlZiB2b2lkICgqVGhyZWFkRnVu
Y3Rpb24pKHZvaWQqIGFyZ3VtZW50KTsKIAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxl
ZCBmcm9tIHRoZSBtYWluIHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHku
CiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2Fs
bCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IApAQCAtOTcsNyArOTcsNyBAQCBUaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29u
c3QgY2hhciogdGhyZWFkTgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNv
bnN0IGNoYXIqIHRocmVhZE5hbWUpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRp
ZmllciBjdXJyZW50VGhyZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitXVEZfRVhQT1JUX1BSSVZB
VEUgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIpOwogV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwogCiBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCB5aWVsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAppbmRleCA3NjNlYzJiLi4xODA1NDRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtNDAs
OSArNDAsMTIgQEAKICNpbmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiUmFuZG9tTnVtYmVy
U2VlZC5oIgogI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZEZ1bmN0
aW9uSW52b2NhdGlvbi5oIgogI2luY2x1ZGUgIlRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMu
aCIKICNpbmNsdWRlICJUaHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgi
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCkBAIC0x
NTIsNiArMTU1LDE0IEBAIHZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJl
YWRJZGVudGlmaWVyIGlkKQogICAgIHRocmVhZE1hcCgpLnJlbW92ZShpZCk7CiB9CiAKK3N0YXRp
YyB2b2lkKiB3dGZUaHJlYWRFbnRyeVBvaW50KHZvaWQqIHBhcmFtKQoreworICAgIE93blB0cjxU
aHJlYWRGdW5jdGlvbkludm9jYXRpb24+IGludm9jYXRpb24gPSBhZG9wdFB0cihzdGF0aWNfY2Fz
dDxUaHJlYWRGdW5jdGlvbkludm9jYXRpb24qPihwYXJhbSkpOworICAgIGludm9jYXRpb24tPmZ1
bmN0aW9uKGludm9jYXRpb24tPmRhdGEpOworCisgICAgcmV0dXJuIDA7Cit9CisKICNpZiBQTEFU
Rk9STShCTEFDS0JFUlJZKQogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChU
aHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKQogewpAQCAtMTcxLDggKzE4Miw5IEBAIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFk
SW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uCiAgICAg
ICAgICAgICBMT0dfRVJST1IoInB0aHJlYWRfYXR0cl9nZXRzdGFjaygpIGZhaWxlZDogJWQiLCBl
cnJubyk7CiAgICAgfQogCisgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4gaW52
b2NhdGlvbiA9IGFkb3B0UHRyKG5ldyBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24oZW50cnlQb2lu
dCwgZGF0YSkpOwogICAgIHB0aHJlYWRfdCB0aHJlYWRIYW5kbGU7Ci0gICAgaWYgKHB0aHJlYWRf
Y3JlYXRlKCZ0aHJlYWRIYW5kbGUsICZhdHRyLCBlbnRyeVBvaW50LCBkYXRhKSkgeworICAgIGlm
IChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkSGFuZGxlLCAmYXR0ciwgd3RmVGhyZWFkRW50cnlQb2lu
dCwgaW52b2NhdGlvbi5nZXQoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJwdGhyZWFkX2NyZWF0
ZSgpIGZhaWxlZDogJWQiLCBlcnJubyk7CiAgICAgICAgIHRocmVhZEhhbmRsZSA9IDA7CiAgICAg
fQpAQCAtMTgzLDE3ICsxOTUsMjYgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRl
cm5hbChUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KICAgICBpZiAo
IXRocmVhZEhhbmRsZSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvLyBUaGUgdGhyZWFkIHdp
bGwgdGFrZSBvd25lcnNoaXAgb2YgaW52b2NhdGlvbi4KKyAgICBpZiAoIWludm9jYXRpb24ubGVh
a1B0cigpKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIHJldHVybiBlc3RhYmxpc2hJZGVudGlm
aWVyRm9yUHRocmVhZEhhbmRsZSh0aHJlYWRIYW5kbGUpOwogfQogI2Vsc2UKIFRocmVhZElkZW50
aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9p
ZCogZGF0YSwgY29uc3QgY2hhciopCiB7CisgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2Nh
dGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKG5ldyBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24o
ZW50cnlQb2ludCwgZGF0YSkpOwogICAgIHB0aHJlYWRfdCB0aHJlYWRIYW5kbGU7Ci0gICAgaWYg
KHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRIYW5kbGUsIDAsIGVudHJ5UG9pbnQsIGRhdGEpKSB7Ci0g
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBwdGhyZWFkIGF0IGVudHJ5IHBvaW50
ICVwIHdpdGggZGF0YSAlcCIsIGVudHJ5UG9pbnQsIGRhdGEpOworICAgIGlmIChwdGhyZWFkX2Ny
ZWF0ZSgmdGhyZWFkSGFuZGxlLCAwLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBpbnZvY2F0aW9uLmdl
dCgpKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgcHRocmVhZCBhdCBl
bnRyeSBwb2ludCAlcCB3aXRoIGRhdGEgJXAiLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBpbnZvY2F0
aW9uLmdldCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgLy8gVGhlIHRocmVh
ZCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIGludm9jYXRpb24uCisgICAgaWYgKCFpbnZvY2F0aW9u
LmxlYWtQdHIoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICByZXR1cm4gZXN0YWJsaXNoSWRl
bnRpZmllckZvclB0aHJlYWRIYW5kbGUodGhyZWFkSGFuZGxlKTsKIH0KICNlbmRpZgpAQCAtMjE3
LDcgKzIzOCw3IEBAIHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBj
aGFyKiB0aHJlYWROYW1lKQogICAgIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplKGlk
KTsKIH0KIAotaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhy
ZWFkSUQsIHZvaWQqKiByZXN1bHQpCitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFk
SWRlbnRpZmllciB0aHJlYWRJRCkKIHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogCkBAIC0yMjUs
NyArMjQ2LDcgQEAgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSUQsIHZvaWQqKiByZXN1bHQpCiAgICAgaWYgKCFwdGhyZWFkSGFuZGxlKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIGludCBqb2luUmVzdWx0ID0gcHRocmVhZF9qb2luKHB0aHJlYWRI
YW5kbGUsIHJlc3VsdCk7CisgICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4ocHRocmVh
ZEhhbmRsZSwgMCk7CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gRURFQURMSykKICAgICAgICAgTE9H
X0VSUk9SKCJUaHJlYWRJZGVudGlmaWVyICV1IHdhcyBmb3VuZCB0byBiZSBkZWFkbG9ja2VkIHRy
eWluZyB0byBxdWl0IiwgdGhyZWFkSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1dpbi5jcHAKaW5kZXggYWMwZjczZi4uYmMzMjI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtMjEwLDE0ICsyMTAsMTQgQEAgc3RhdGlj
IHZvaWQgY2xlYXJUaHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIgaWQp
CiBzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxsIHd0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCogcGFy
YW0pCiB7CiAgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4gaW52b2NhdGlvbiA9
IGFkb3B0UHRyKHN0YXRpY19jYXN0PFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbio+KHBhcmFtKSk7
Ci0gICAgdm9pZCogcmVzdWx0ID0gaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0
YSk7CisgICAgaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7CiAKICNpZiAh
VVNFKFBUSFJFQURTKSAmJiBPUyhXSU5ET1dTKQogICAgIC8vIERvIHRoZSBUTFMgY2xlYW51cC4K
ICAgICBUaHJlYWRTcGVjaWZpY1RocmVhZEV4aXQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFRo
cmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQ
b2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogdGhyZWFkTmFtZSkKQEAgLTI1Miw3ICsyNTIs
NyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9u
IGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogICAgIHJldHVybiB0aHJlYWRJRDsKIH0KIAot
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZv
aWQqKiByZXN1bHQpCitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmll
ciB0aHJlYWRJRCkKIHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDQ5ODQ1ZDIuLjJkOGU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wMi0x
NCAgS2FsZXYgTGVtYmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgorCisgICAgICAgIFJlbW92
ZSB1bnVzZWQgcGFyYW1ldGVycyBmcm9tIFdURiB0aHJlYWRpbmcgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KCkgaGFkIGFuIG91dCBwYXJhbSAndm9pZCAqKnJlc3VsdCcgdG8gZ2V0IHRoZQorICAgICAgICAn
dm9pZCAqJyByZXR1cm5lZCBieSBUaHJlYWRGdW5jdGlvbi4gSG93ZXZlciwgdGhlIGltcGxlbWVu
dGF0aW9uIGluCisgICAgICAgIFRocmVhZGluZ1dpbi5jcHAgaWdub3JlZCB0aGUgb3V0IHBhcmFt
LCBub3QgZmlsbGluZyBpdCBpbi4gVGhpcyBoYWQKKyAgICAgICAgbGVkIHRvIGEgc2l0dWF0aW9u
IHdoZXJlIG5vbmUgb2YgdGhlIGNsaWVudCBjb2RlIG1hZGUgdXNlIG9mIHRoZSBwYXJhbQorICAg
ICAgICBhbmQganVzdCBpZ25vcmVkIGl0LgorCisgICAgICAgIFRvIGNsZWFuIHRoaXMgdXAsIHRo
ZSBwYXRjaCBjaGFuZ2VzIHRoZSBzaWduYXR1cmUgb2YgVGhyZWFkRnVuY3Rpb24gdG8KKyAgICAg
ICAgcmV0dXJuIHZvaWQgaW5zdGVhZCBvZiB2b2lkKiBhbmQgZHJvcHMgdGhlIHRoZSB1bnVzZWQg
J3ZvaWQgKipyZXN1bHQnCisgICAgICAgIHBhcmFtZXRlciBmcm9tIHdhaXRGb3JUaHJlYWRDb21w
bGV0aW9uLiBBbHNvLCBhbGwgY2xpZW50IGNvZGUgaXMKKyAgICAgICAgdXBkYXRlZCBmb3IgdGhl
IEFQSSBjaGFuZ2UuCisKKyAgICAgICAgQXMgbWVudGlvbmVkIGluIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4OSAsIGV2ZW4KKyAgICAgICAgdGhvdWdoIHRoZSBj
aGFuZ2Ugb25seSBhZmZlY3RzIGludGVybmFsIEFQSSwgU2FmYXJpIGlzIHVzaW5nIGl0CisgICAg
ICAgIGRpcmVjdGx5IGFuZCB3ZSdsbCBuZWVkIHRvIGtlZXAgdGhlIG9sZCB2ZXJzaW9ucyBhcm91
bmQgZm9yIEFCSQorICAgICAgICBjb21wYXRpYmlsaXR5LiBGb3IgdGhpcywgdGhlIHBhdGNoIGFk
ZHMgY29tcGF0aWJpbGl0eSB3cmFwcGVycyB3aXRoCisgICAgICAgIHRoZSBvbGQgQUJJLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVj
dE9uQWx0ZXJuYXRlVGhyZWFkRm9yRGVidWdnaW5nKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVRocmVhZDo6ZmlsZVRocmVhZFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVUaHJlYWQ6OnJ1bkxvb3ApOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVRocmVhZC5oOgorICAgICAgICAoRmlsZVRocmVhZCk6CisgICAgICAgICogbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VT
eW5jVGhyZWFkU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRGF0
YWJhc2VTeW5jVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY1Ro
cmVhZE1haW5Mb29wKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAg
ICAgICAgKEljb25EYXRhYmFzZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQ2Fs
bGJhY2spOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAg
ICAgICAoU2Nyb2xsaW5nVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6
CisgICAgICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OndhaXRGb3JMb2FkZXJUaHJl
YWRDb21wbGV0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFRocmVhZEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cnVuTG9hZGVyVGhyZWFkKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6Cisg
ICAgICAgICogc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoRGF0YWJhc2VUaHJl
YWQpOgorICAgICAgICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAg
ICAgICogc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaDoKKyAgICAgICAgKExvY2FsU3RvcmFn
ZVRocmVhZCk6CisgICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2Rlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkpOgorICAgICAg
ICAqIHdlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgIChBc3luY0F1ZGlvRGVj
b2Rlcik6CisgICAgICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0
aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6
cmVuZGVyRW50cnkpOgorICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oOgorICAgICAgICAoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWQ6OndvcmtlclRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
d29ya2VyVGhyZWFkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAg
ICAoV29ya2VyVGhyZWFkKToKKwogMjAxMi0wMi0xMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV0lOXSBEZWZpbmUgSFdORF9NRVNTQUdFIGlmIG5v
dCBkb25lIGFscmVhZHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dD
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIu
Y3BwCmluZGV4IDc2NWUzNjMuLmNmNzBmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcApAQCAtMzYsMTEgKzM2LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQqIGNvbGxlY3Qodm9pZCop
CitzdGF0aWMgdm9pZCBjb2xsZWN0KHZvaWQqKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5o
ZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIEdDQ29udHJvbGxl
ciYgZ2NDb250cm9sbGVyKCkKQEAgLTc3LDcgKzc2LDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6Omdh
cmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRGb3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxE
b24KICAgICBUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEID0gY3JlYXRlVGhyZWFkKGNvbGxlY3Qs
IDAsICJXZWJDb3JlOiBHQ0NvbnRyb2xsZXIiKTsKIAogICAgIGlmICh3YWl0VW50aWxEb25lKSB7
Ci0gICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKHRocmVhZElELCAwKTsKKyAgICAgICAg
d2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkSUQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcAppbmRleCA0ZDU1NjMwLi44MmJj
Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5jcHAKQEAgLTgzLDEzICs4Mywx
MyBAQCB2b2lkIEZpbGVUaHJlYWQ6OnVuc2NoZWR1bGVUYXNrcyhjb25zdCB2b2lkKiBpbnN0YW5j
ZSkKICAgICBtX3F1ZXVlLnJlbW92ZUlmKHByZWRpY2F0ZSk7CiB9CiAKLXZvaWQqIEZpbGVUaHJl
YWQ6OmZpbGVUaHJlYWRTdGFydCh2b2lkKiBhcmcpCit2b2lkIEZpbGVUaHJlYWQ6OmZpbGVUaHJl
YWRTdGFydCh2b2lkKiBhcmcpCiB7CiAgICAgRmlsZVRocmVhZCogZmlsZVRocmVhZCA9IHN0YXRp
Y19jYXN0PEZpbGVUaHJlYWQqPihhcmcpOwotICAgIHJldHVybiBmaWxlVGhyZWFkLT5ydW5Mb29w
KCk7CisgICAgZmlsZVRocmVhZC0+cnVuTG9vcCgpOwogfQogCi12b2lkKiBGaWxlVGhyZWFkOjpy
dW5Mb29wKCkKK3ZvaWQgRmlsZVRocmVhZDo6cnVuTG9vcCgpCiB7CiAgICAgewogICAgICAgICAv
LyBXYWl0IGZvciBGaWxlVGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRlIHRvIGhhdmUgbV90aHJl
YWRJRApAQCAtMTEwLDggKzExMCw2IEBAIHZvaWQqIEZpbGVUaHJlYWQ6OnJ1bkxvb3AoKQogCiAg
ICAgLy8gQ2xlYXIgdGhlIHNlbGYgcmVmcHRyLCBwb3NzaWJseSByZXN1bHRpbmcgaW4gZGVsZXRp
b24KICAgICBtX3NlbGZSZWYgPSAwOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKaW5kZXggOWMxZDI2Ny4u
NmMzMjU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmgKQEAgLTcyLDggKzcyLDgg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxlVGhyZWFkKCk7CiAKLSAgICBzdGF0aWMgdm9p
ZCogZmlsZVRocmVhZFN0YXJ0KHZvaWQqKTsKLSAgICB2b2lkKiBydW5Mb29wKCk7CisgICAgc3Rh
dGljIHZvaWQgZmlsZVRocmVhZFN0YXJ0KHZvaWQqKTsKKyAgICB2b2lkIHJ1bkxvb3AoKTsKIAog
ICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICBSZWZQdHI8RmlsZVRocmVhZD4g
bV9zZWxmUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggYTg1MDdhOS4uNWFlODAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwCkBAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OmNs
b3NlKCkKICAgICAgICAgd2FrZVN5bmNUaHJlYWQoKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdh
aXQgZm9yIHRoZSBzeW5jIHRocmVhZCB0byB0ZXJtaW5hdGUKLSAgICAgICAgd2FpdEZvclRocmVh
ZENvbXBsZXRpb24obV9zeW5jVGhyZWFkLCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24obV9zeW5jVGhyZWFkKTsKICAgICB9CiAKICAgICBtX3N5bmNUaHJlYWRSdW5uaW5nID0g
ZmFsc2U7ICAgIApAQCAtOTQ5LDE0ICs5NDksMTQgQEAgYm9vbCBJY29uRGF0YWJhc2U6OnNob3Vs
ZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdGhyZWFkVGVybWluYXRp
b25SZXF1ZXN0ZWQgfHwgbV9yZW1vdmVJY29uc1JlcXVlc3RlZDsKIH0KIAotdm9pZCogSWNvbkRh
dGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCogdkljb25EYXRhYmFzZSkK
K3ZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCogdklj
b25EYXRhYmFzZSkKIHsgICAgCiAgICAgSWNvbkRhdGFiYXNlKiBpY29uREIgPSBzdGF0aWNfY2Fz
dDxJY29uRGF0YWJhc2UqPih2SWNvbkRhdGFiYXNlKTsKICAgICAKLSAgICByZXR1cm4gaWNvbkRC
LT5pY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CisgICAgaWNvbkRCLT5pY29uRGF0YWJhc2VTeW5j
VGhyZWFkKCk7CiB9CiAKLXZvaWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
ZCgpCit2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiB7CiAgICAg
Ly8gVGhlIGNhbGwgdG8gY3JlYXRlIHRoaXMgdGhyZWFkIG1pZ2h0IG5vdCBjb21wbGV0ZSBiZWZv
cmUgdGhlIHRocmVhZCBhY3R1YWxseSBzdGFydHMsIHNvIHdlIG1pZ2h0IGZhaWwgdGhpcyBBU1NF
UlRfSUNPTl9TWU5DX1RIUkVBRCgpIGJlY2F1c2UgdGhlIHBvaW50ZXIgCiAgICAgLy8gdG8gb3Vy
IHRocmVhZCBzdHJ1Y3R1cmUgaGFzbid0IGJlZW4gZmlsbGVkIGluIHlldC4KQEAgLTk4OCwxMiAr
OTg4LDE0IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAg
ICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICAgICAgaWYgKCFtX3N5
bmNEQi5vcGVuKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpKSB7CiAgICAgICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBvcGVuIGljb24gZGF0YWJhc2UgYXQgcGF0aCAlcyAtICVzIiwgbV9jb21w
bGV0ZURhdGFiYXNlUGF0aC5hc2NpaSgpLmRhdGEoKSwgbV9zeW5jREIubGFzdEVycm9yTXNnKCkp
OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpKQotICAgICAg
ICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgaWYgKHNob3VsZFN0b3BUaHJlYWRB
Y3Rpdml0eSgpKSB7CisgICAgICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgZG91YmxlIHRpbWVT
dGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDAxLDggKzEwMDMsMTAgQEAgdm9pZCogSWNvbkRh
dGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICNlbmRpZiAgICAKIAogICAgIHBlcmZv
cm1PcGVuSW5pdGlhbGl6YXRpb24oKTsKLSAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5
KCkpCi0gICAgICAgIHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICBpZiAoc2hvdWxk
U3RvcFRocmVhZEFjdGl2aXR5KCkpIHsKKyAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBk
b3VibGUgbmV3U3RhbXAgPSBjdXJyZW50VGltZSgpOwpAQCAtMTAyNCw4ICsxMDI4LDEwIEBAIHZv
aWQqIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAgICAgICAgICAgICBp
bXBvcnRUcmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpCi0gICAgICAgICAgICByZXR1cm4gc3lu
Y1RocmVhZE1haW5Mb29wKCk7CisgICAgICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHko
KSkgeworICAgICAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAg
bmV3U3RhbXAgPSBjdXJyZW50VGltZSgpOwpAQCAtMTA0MSw4ICsxMDQ3LDEwIEBAIHZvaWQqIElj
b25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAgICAgTE9HKEljb25EYXRhYmFz
ZSwgIihUSFJFQUQpIFN0YXJ0aW5nIGljb25VUkwgaW1wb3J0Iik7CiAgICAgcGVyZm9ybVVSTElt
cG9ydCgpOwogICAgIAotICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgIGlmIChzaG91bGRTdG9wVGhyZWFk
QWN0aXZpdHkoKSkgeworICAgICAgICBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBuZXdTdGFtcCA9IGN1cnJlbnRU
aW1lKCk7CkBAIC0xMDUwLDcgKzEwNTgsNyBAQCB2b2lkKiBJY29uRGF0YWJhc2U6Omljb25EYXRh
YmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmIAogCiAgICAgTE9HKEljb25EYXRhYmFzZSwgIihUSFJF
QUQpIEJlZ2lubmluZyBzeW5jIik7Ci0gICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgpOwor
ICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOwogfQogCiBzdGF0aWMgaW50IGRhdGFiYXNlVmVyc2lv
bk51bWJlcihTUUxpdGVEYXRhYmFzZSYgZGIpCkBAIC0xMzQ4LDcgKzEzNTYsNyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6cGVyZm9ybVVSTEltcG9ydCgpCiAgICAgY2FsbE9uTWFpblRocmVhZChub3Rp
ZnlQZW5kaW5nTG9hZERlY2lzaW9uc09uTWFpblRocmVhZCwgdGhpcyk7CiB9CiAKLXZvaWQqIElj
b25EYXRhYmFzZTo6c3luY1RocmVhZE1haW5Mb29wKCkKK3ZvaWQgSWNvbkRhdGFiYXNlOjpzeW5j
VGhyZWFkTWFpbkxvb3AoKQogewogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAKQEAg
LTE0NjEsOCArMTQ2OSw2IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6c3luY1RocmVhZE1haW5Mb29w
KCkKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICBtX2Rp
c2FibGVkU3VkZGVuVGVybWluYXRpb25Gb3JTeW5jVGhyZWFkID0gZmFsc2U7CiAgICAgfQotCi0g
ICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgSWNvbkRhdGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggN2FiMDg0MS4u
ZjRhYmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAg
LTE4MywxNSArMTgzLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5KCkgY29uc3Q7CiAKIHByaXZhdGU6ICAgIAotICAgIHN0YXRpYyB2b2lkKiBp
Y29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQodm9pZCAqKTsKLSAgICB2b2lkKiBpY29uRGF0YWJh
c2VTeW5jVGhyZWFkKCk7CisgICAgc3RhdGljIHZvaWQgaWNvbkRhdGFiYXNlU3luY1RocmVhZFN0
YXJ0KHZvaWQgKik7CisgICAgdm9pZCBpY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CiAgICAgCiAg
ICAgLy8gVGhlIGZvbGxvd2luZyBibG9jayBvZiBtZXRob2RzIGFyZSBjYWxsZWQgZXhjbHVzaXZl
bHkgYnkgdGhlIHN5bmMgdGhyZWFkIHRvIG1hbmFnZSBpL28gdG8gYW5kIGZyb20gdGhlIGRhdGFi
YXNlCiAgICAgLy8gRWFjaCBtZXRob2Qgc2hvdWxkIHBlcmlvZGljYWxseSBtb25pdG9yIG1fdGhy
ZWFkVGVybWluYXRpb25SZXF1ZXN0ZWQgd2hlbiBpdCBtYWtlcyBzZW5zZSB0byByZXR1cm4gZWFy
bHkgb24gc2h1dGRvd24KICAgICB2b2lkIHBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKTsKICAg
ICBib29sIGNoZWNrSW50ZWdyaXR5KCk7CiAgICAgdm9pZCBwZXJmb3JtVVJMSW1wb3J0KCk7Ci0g
ICAgdm9pZCogc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgdm9pZCBzeW5jVGhyZWFkTWFpbkxv
b3AoKTsKICAgICBib29sIHJlYWRGcm9tRGF0YWJhc2UoKTsKICAgICBib29sIHdyaXRlVG9EYXRh
YmFzZSgpOwogICAgIHZvaWQgcHJ1bmVVbnJldGFpbmVkSWNvbnMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4IGZjNWE0MDUu
LmE5NWNmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVGhyZWFkLmNwcApAQCAtNzcsMTEgKzc3LDkgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmNy
ZWF0ZVRocmVhZElmTmVlZGVkKCkKICAgICB9CiB9CiAKLXZvaWQqIFNjcm9sbGluZ1RocmVhZDo6
dGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhyZWFkKQordm9pZCBTY3JvbGxpbmdUaHJl
YWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCkKIHsKICAgICBzdGF0aWNf
Y2FzdDxTY3JvbGxpbmdUaHJlYWQqPihzY3JvbGxpbmdUaHJlYWQpLT50aHJlYWRCb2R5KCk7Ci0K
LSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZEJvZHkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAppbmRl
eCAyMjY3MWU0Li5kOGRmYTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBTY3JvbGxpbmdUaHJlYWQmIHNoYXJlZCgpOwogCiAgICAgdm9pZCBjcmVhdGVUaHJlYWRJZk5l
ZWRlZCgpOwotICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdU
aHJlYWQpOworICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1Ro
cmVhZCk7CiAgICAgdm9pZCB0aHJlYWRCb2R5KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9u
c0Zyb21TY3JvbGxpbmdUaHJlYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKaW5kZXggY2I3MzU1YS4uOGY5NmM5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VM
b2FkZXIuY3BwCkBAIC04MCwxMyArODAsMTEgQEAgSFJURkRhdGFiYXNlTG9hZGVyOjp+SFJURkRh
dGFiYXNlTG9hZGVyKCkKIAogCiAvLyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFzZSBp
biB0aGlzIHRocmVhZC4KLXN0YXRpYyB2b2lkKiBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRo
cmVhZERhdGEpCitzdGF0aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRocmVhZERh
dGEpCiB7CiAgICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSByZWludGVycHJldF9jYXN0
PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOwogICAgIEFTU0VSVChsb2FkZXIpOwog
ICAgIGxvYWRlci0+bG9hZCgpOwotICAgIAotICAgIHJldHVybiAwOwogfQogCiB2b2lkIEhSVEZE
YXRhYmFzZUxvYWRlcjo6bG9hZCgpCkBAIC0xMjEsNyArMTE5LDcgQEAgdm9pZCBIUlRGRGF0YWJh
c2VMb2FkZXI6OndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9uKCkKICAgICAKICAgICAvLyB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIHNob3VsZCBub3QgYmUgY2FsbGVkIHR3aWNlIGZvciB0
aGUgc2FtZSB0aHJlYWQuCiAgICAgaWYgKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQpCi0gICAgICAg
IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQsIDApOworICAg
ICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX2RhdGFiYXNlTG9hZGVyVGhyZWFkKTsKICAg
ICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggYzYxMTQxNC4uYzZhYjU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCkBAIC01MywxMSArNTMsMTAgQEAgY29uc3Qgc2l6ZV90IFJlYWx0aW1lRnJhbWVMaW1p
dCA9IDgxOTIgICsgNDA5NjsgLy8gfjI3OG1zZWMgQCA0NC4xS0h6CiBjb25zdCBzaXplX3QgTWlu
RkZUU2l6ZSA9IDI1NjsKIGNvbnN0IHNpemVfdCBNYXhSZWFsdGltZUZGVFNpemUgPSAyMDQ4Owog
Ci1zdGF0aWMgdm9pZCogYmFja2dyb3VuZFRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCitz
dGF0aWMgdm9pZCBiYWNrZ3JvdW5kVGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKIHsKICAg
ICBSZXZlcmJDb252b2x2ZXIqIHJldmVyYkNvbnZvbHZlciA9IHN0YXRpY19jYXN0PFJldmVyYkNv
bnZvbHZlcio+KHRocmVhZERhdGEpOwogICAgIHJldmVyYkNvbnZvbHZlci0+YmFja2dyb3VuZFRo
cmVhZEVudHJ5KCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJi
Q29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xp
Y2VTaXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IGNvbnZvbHZlclJlbmRlclBoYXNlLCBi
b29sIHVzZUJhY2tncm91bmRUaHJlYWRzKQpAQCAtMTQyLDcgKzE0MSw3IEBAIFJldmVyYkNvbnZv
bHZlcjo6flJldmVyYkNvbnZvbHZlcigpCiAgICAgICAgICAgICBtX2JhY2tncm91bmRUaHJlYWRD
b25kaXRpb24uc2lnbmFsKCk7CiAgICAgICAgIH0KIAotICAgICAgICB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihtX2JhY2tncm91bmRUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29t
cGxldGlvbihtX2JhY2tncm91bmRUaHJlYWQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4
IGFhOTlkZjMuLjMwODhlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGlj
IHZvaWQgZW1wdHlQZXJmb3JtKHZvaWQqKQogewogfQogCi1zdGF0aWMgdm9pZCogcnVuTG9hZGVy
VGhyZWFkKHZvaWQqKQorc3RhdGljIHZvaWQgcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQogewogICAg
IGxvYWRlclJ1bkxvb3BPYmplY3QgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAKQEAgLTU2LDgg
KzU2LDYgQEAgc3RhdGljIHZvaWQqIHJ1bkxvYWRlclRocmVhZCh2b2lkKikKICAgICAgICAgQXV0
b2RyYWluZWRQb29sIHBvb2w7CiAgICAgICAgIHJlc3VsdCA9IENGUnVuTG9vcFJ1bkluTW9kZShr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCks
IHRydWUpOwogICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAmJiBy
ZXN1bHQgIT0ga0NGUnVuTG9vcFJ1bkZpbmlzaGVkKTsKLQotICAgIHJldHVybiAwOwogfQogCiBD
RlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VUaHJlYWQuY3BwCmluZGV4IGNiZGUzMjQuLmQ3NzFiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC04OCwxMyArODgsMTMgQEAgYm9vbCBEYXRhYmFz
ZVRocmVhZDo6dGVybWluYXRpb25SZXF1ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0
YXNrU3luY2hyb24KICAgICByZXR1cm4gbV9xdWV1ZS5raWxsZWQoKTsKIH0KIAotdm9pZCogRGF0
YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkU3RhcnQodm9pZCogdkRhdGFiYXNlVGhyZWFkKQor
dm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKiB2RGF0YWJhc2VU
aHJlYWQpCiB7CiAgICAgRGF0YWJhc2VUaHJlYWQqIGRiVGhyZWFkID0gc3RhdGljX2Nhc3Q8RGF0
YWJhc2VUaHJlYWQqPih2RGF0YWJhc2VUaHJlYWQpOwotICAgIHJldHVybiBkYlRocmVhZC0+ZGF0
YWJhc2VUaHJlYWQoKTsKKyAgICBkYlRocmVhZC0+ZGF0YWJhc2VUaHJlYWQoKTsKIH0KIAotdm9p
ZCogRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKK3ZvaWQgRGF0YWJhc2VUaHJlYWQ6
OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIERhdGFiYXNl
VGhyZWFkOjpzdGFydCgpIHRvIGNvbXBsZXRlLgpAQCAtMTM0LDggKzEzNCw2IEBAIHZvaWQqIERh
dGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAKICAgICBpZiAoY2xlYW51cFN5bmMpIC8v
IFNvbWVvbmUgd2FudGVkIHRvIGtub3cgd2hlbiB3ZSB3ZXJlIGRvbmUgY2xlYW5pbmcgdXAuCiAg
ICAgICAgIGNsZWFudXBTeW5jLT50YXNrQ29tcGxldGVkKCk7Ci0KLSAgICByZXR1cm4gMDsKIH0K
IAogdm9pZCBEYXRhYmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlKiBkYXRh
YmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCBkNDEwZWRi
Li5mYTRmZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCkBAIC03
Miw4ICs3Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGF0YWJhc2VUaHJlYWQoKTsKIAot
ICAgIHN0YXRpYyB2b2lkKiBkYXRhYmFzZVRocmVhZFN0YXJ0KHZvaWQqKTsKLSAgICB2b2lkKiBk
YXRhYmFzZVRocmVhZCgpOworICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkU3RhcnQodm9p
ZCopOworICAgIHZvaWQgZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIE11dGV4IG1fdGhyZWFkQ3Jl
YXRpb25NdXRleDsKICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggYmExYjBmYS4uYThl
NDRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNw
cApAQCAtNTYsMTggKzU2LDE2IEBAIGJvb2wgTG9jYWxTdG9yYWdlVGhyZWFkOjpzdGFydCgpCiAg
ICAgcmV0dXJuIG1fdGhyZWFkSUQ7CiB9CiAKLXZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6dGhy
ZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqIHRocmVhZCkKK3ZvaWQgTG9jYWxTdG9yYWdlVGhy
ZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCogdGhyZWFkKQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxMb2NhbFN0b3JhZ2VUaHJlYWQqPih0aHJlYWQpLT50aHJlYWRFbnRyeVBv
aW50KCk7CisgICAgc3RhdGljX2Nhc3Q8TG9jYWxTdG9yYWdlVGhyZWFkKj4odGhyZWFkKS0+dGhy
ZWFkRW50cnlQb2ludCgpOwogfQogCi12b2lkKiBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVu
dHJ5UG9pbnQoKQordm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIHdoaWxlIChPd25QdHI8TG9jYWxT
dG9yYWdlVGFzaz4gdGFzayA9IG1fcXVldWUud2FpdEZvck1lc3NhZ2UoKSkKICAgICAgICAgdGFz
ay0+cGVyZm9ybVRhc2soKTsKLQotICAgIHJldHVybiAwOwogfQogCiB2b2lkIExvY2FsU3RvcmFn
ZVRocmVhZDo6c2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8TG9jYWxTdG9yYWdlVGFzaz4gdGFzaykK
QEAgLTg1LDkgKzgzLDggQEAgdm9pZCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAg
ICAgaWYgKCFtX3RocmVhZElEKQogICAgICAgICByZXR1cm47CiAKLSAgICB2b2lkKiByZXR1cm5W
YWx1ZTsKICAgICBtX3F1ZXVlLmFwcGVuZChMb2NhbFN0b3JhZ2VUYXNrOjpjcmVhdGVUZXJtaW5h
dGUodGhpcykpOwotICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQsICZyZXR1
cm5WYWx1ZSk7CisgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCk7CiAgICAg
QVNTRVJUKG1fcXVldWUua2lsbGVkKCkpOwogICAgIG1fdGhyZWFkSUQgPSAwOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmgKaW5kZXggNDY0NjdhZi4uNDM0
ZjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oCkBA
IC01NSw4ICs1NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgTG9jYWxTdG9yYWdl
VGhyZWFkKCk7CiAKICAgICAgICAgLy8gQ2FsbGVkIG9uIGJhY2tncm91bmQgdGhyZWFkLgotICAg
ICAgICBzdGF0aWMgdm9pZCogdGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqKTsKLSAgICAg
ICAgdm9pZCogdGhyZWFkRW50cnlQb2ludCgpOworICAgICAgICBzdGF0aWMgdm9pZCB0aHJlYWRF
bnRyeVBvaW50Q2FsbGJhY2sodm9pZCopOworICAgICAgICB2b2lkIHRocmVhZEVudHJ5UG9pbnQo
KTsKIAogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7CiAgICAgICAgIE1lc3Nh
Z2VRdWV1ZTxMb2NhbFN0b3JhZ2VUYXNrPiBtX3F1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGMyNjgyNDMuLmYwMGJkMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTQ5LDgg
KzQ5LDcgQEAgQXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2RlcigpCiAgICAgbV9x
dWV1ZS5raWxsKCk7CiAgICAgCiAgICAgLy8gU3RvcCB0aHJlYWQuCi0gICAgdm9pZCogZXhpdENv
ZGU7Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCwgJmV4aXRDb2RlKTsK
KyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElEKTsKICAgICBtX3RocmVhZElE
ID0gMDsKIH0KIApAQCAtNjYsMTIgKzY1LDExIEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRl
Y29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhCiB9
CiAKIC8vIEFzeW5jaHJvbm91c2x5IGRlY29kZSBpbiB0aGlzIHRocmVhZC4KLXZvaWQqIEFzeW5j
QXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQordm9pZCBBc3luY0F1
ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKIHsKICAgICBBU1NFUlQo
dGhyZWFkRGF0YSk7CiAgICAgQXN5bmNBdWRpb0RlY29kZXIqIGRlY29kZXIgPSByZWludGVycHJl
dF9jYXN0PEFzeW5jQXVkaW9EZWNvZGVyKj4odGhyZWFkRGF0YSk7CiAgICAgZGVjb2Rlci0+cnVu
TG9vcCgpOwotICAgIHJldHVybiAwOwogfQogCiB2b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjpydW5M
b29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4
IGUyZmM0ZGMuLmNlZDgwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IG1fYXVkaW9CdWZmZXI7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCog
dGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSk7CisgICAgc3RhdGljIHZvaWQgdGhyZWFkRW50
cnkodm9pZCogdGhyZWFkRGF0YSk7CiAgICAgdm9pZCBydW5Mb29wKCk7CiAKICAgICBXVEY6OlRo
cmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDE5OGE1MDIuLmFl
YmQ1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fcmVuZGVyVGhyZWFkKSB7Ci0gICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1f
cmVuZGVyVGhyZWFkLCAwKTsKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9yZW5k
ZXJUaHJlYWQpOwogICAgICAgICBtX3JlbmRlclRocmVhZCA9IDA7CiAgICAgfQogCkBAIC05Miwx
MyArOTIsMTEgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkKIH0KIAogLy8gRG8gb2ZmbGluZSByZW5kZXJpbmcgaW4gdGhpcyB0aHJlYWQuCi12b2lk
KiBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlckVudHJ5KHZvaWQqIHRocmVhZERh
dGEpCit2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyRW50cnkodm9pZCog
dGhyZWFkRGF0YSkKIHsKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0
aW9uTm9kZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKj4o
dGhyZWFkRGF0YSk7CiAgICAgQVNTRVJUKGRlc3RpbmF0aW9uTm9kZSk7CiAgICAgZGVzdGluYXRp
b25Ob2RlLT5yZW5kZXIoKTsKLSAgICAKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBPZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlbmRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IGM0ZDU2N2EuLjdi
Y2I5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gUmVu
ZGVyaW5nIHRocmVhZC4KICAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fcmVuZGVyVGhy
ZWFkOwogICAgIGJvb2wgbV9zdGFydGVkUmVuZGVyaW5nOwotICAgIHN0YXRpYyB2b2lkKiByZW5k
ZXJFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKKyAgICBzdGF0aWMgdm9pZCByZW5kZXJFbnRyeSh2
b2lkKiB0aHJlYWREYXRhKTsKICAgICB2b2lkIHJlbmRlcigpOwogICAgIAogICAgIC8vIEZvciBj
b21wbGV0aW9uIGNhbGxiYWNrIG9uIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuY3BwCmluZGV4IDkzYmEwYmYuLjM0Y2Y5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEyMywxMiArMTIzLDEyIEBAIGJvb2wgV29ya2Vy
VGhyZWFkOjpzdGFydCgpCiAgICAgcmV0dXJuIG1fdGhyZWFkSUQ7CiB9CiAKLXZvaWQqIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQordm9pZCBXb3JrZXJUaHJl
YWQ6OndvcmtlclRocmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V29ya2VyVGhyZWFkKj4odGhyZWFkKS0+d29ya2VyVGhyZWFkKCk7CisgICAgc3RhdGlj
X2Nhc3Q8V29ya2VyVGhyZWFkKj4odGhyZWFkKS0+d29ya2VyVGhyZWFkKCk7CiB9CiAKLXZvaWQq
IFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKK3ZvaWQgV29ya2VyVGhyZWFkOjp3b3JrZXJU
aHJlYWQoKQogewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0
aW9uTXV0ZXgpOwpAQCAtMTczLDggKzE3Myw2IEBAIHZvaWQqIFdvcmtlclRocmVhZDo6d29ya2Vy
VGhyZWFkKCkKIAogICAgIC8vIFRoZSB0aHJlYWQgb2JqZWN0IG1heSBiZSBhbHJlYWR5IGRlc3Ry
b3llZCBmcm9tIG5vdGlmaWNhdGlvbiBub3csIGRvbid0IHRyeSB0byBhY2Nlc3MgInRoaXMiLgog
ICAgIGRldGFjaFRocmVhZCh0aHJlYWRJRCk7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuaAppbmRleCA2NjQ2YjExLi5lM2ExMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
VGhyZWFkLmgKQEAgLTgwLDggKzgwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgLy8gU3RhdGljIGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRoZSBjb3JlIHJv
dXRpbmUgb24gdGhlIG5ldyB0aHJlYWQuIFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBXb3JrZXJUaHJl
YWQgb2JqZWN0LgotICAgICAgICBzdGF0aWMgdm9pZCogd29ya2VyVGhyZWFkU3RhcnQodm9pZCop
OwotICAgICAgICB2b2lkKiB3b3JrZXJUaHJlYWQoKTsKKyAgICAgICAgc3RhdGljIHZvaWQgd29y
a2VyVGhyZWFkU3RhcnQodm9pZCopOworICAgICAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogCiAg
ICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICAgICAgV29ya2VyUnVuTG9v
cCBtX3J1bkxvb3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMzJkYjMxOC4uNTdmNjY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIgIDxr
YWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJz
IGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBhcmFt
ICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVkIGJ5
IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAgICAg
VGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0IGlu
LiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0aGUg
Y2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGlnbm9y
ZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMgdGhl
IHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBpbnN0
ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcKKyAg
ICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFsbCBj
bGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKworICAg
ICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVjdHMg
aW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5kIHdl
J2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAgICAg
IGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5IHdy
YXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBXZWJLaXQudmNw
cm9qL1dlYktpdF9DYWlyby5kZWY6IEFkZCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBX
ZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWY6IERpdHRvLgorCiAyMDEyLTAyLTA3
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2Vt
ZW50IHRleHQgc2hvdWxkIGJlIGF2YWlsYWJsZSBmcm9tIHRoZSBtYXJrZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYKaW5kZXggODliMGEy
YS4uZTRjZDI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXRfQ2Fpcm8uZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2Vi
S2l0X0NhaXJvLmRlZgpAQCAtMTIyLDYgKzEyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2Fk
Y2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJl
YWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2
QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFow
UEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNo
VGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlB
WFhaCkBAIC0xMzksNSArMTQwLDYgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQXRvbWljYWxs
eUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/dXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/
d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJl
YWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZA
QFlBSVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWYgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5kZWYKaW5kZXggMWIxYjcyZC4uZTRhYzExOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm9fZGVi
dWcuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJv
X2RlYnVnLmRlZgpAQCAtMTIyLDYgKzEyMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2FkY2Fz
dEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJlYWRA
V1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBB
WFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFowUEJE
QFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNoVGhy
ZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFha
CkBAIC0xMzksNSArMTQwLDYgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQXRvbWljYWxseUlu
aXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdu
b3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/
d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/d2Fp
dEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJlYWRD
b21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlB
SVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzJkNDZiZS4uODhlZGJjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJl
ckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXJzIGZyb20gV1RG
IHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBhcmFtICd2b2lkICoq
cmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVkIGJ5IFRocmVhZEZ1
bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAgICAgVGhyZWFkaW5n
V2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0IGluLiBUaGlzIGhh
ZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0aGUgY2xpZW50IGNv
ZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGlnbm9yZWQgaXQuCisK
KyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMgdGhlIHNpZ25hdHVy
ZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBpbnN0ZWFkIG9mIHZv
aWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcKKyAgICAgICAgcGFy
YW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFsbCBjbGllbnQgY29k
ZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKworICAgICAgICBBcyBt
ZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5
ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVjdHMgaW50ZXJuYWwg
QVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5kIHdlJ2xsIG5lZWQg
dG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAgICAgIGNvbXBhdGli
aWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5IHdyYXBwZXJzIHdp
dGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUu
aDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6CisgICAgICAgICogUGxhdGZvcm0vZ3RrL1dvcmtRdWV1
ZUd0ay5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5jaGVyTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0Ojp3ZWJUaHJlYWRCb2R5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNo
ZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OndlYlRocmVhZEJv
ZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vVGhyZWFkTGF1bmNoZXJXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJUaHJlYWRCb2R5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpyYW5kb21DcmFzaFRocmVhZCk6
CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRl
LmRlZjoKKwogMjAxMi0wMi0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdpbmRvd3MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaAppbmRl
eCA1ODdlZjg5Li43YjRhZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9X
b3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Xb3JrUXVldWUuaApAQCAt
MTY2LDcgKzE2Niw3IEBAIHByaXZhdGU6CiAgICAgUVRocmVhZCogbV93b3JrVGhyZWFkOwogICAg
IGZyaWVuZCBjbGFzcyBXb3JrSXRlbVF0OwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0YXRp
YyB2b2lkKiBzdGFydFdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKKyAgICBzdGF0aWMgdm9p
ZCBzdGFydFdvcmtRdWV1ZVRocmVhZChXb3JrUXVldWUqKTsKICAgICB2b2lkIHdvcmtRdWV1ZVRo
cmVhZEJvZHkoKTsKICAgICB2b2lkIGRpc3BhdGNoT25Tb3VyY2UoR1NvdXJjZSosIGNvbnN0IEZ1
bmN0aW9uPHZvaWQoKT4mLCBHU291cmNlRnVuYyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKaW5kZXggMTEyYmEyOC4uZjBjMTFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHAKQEAgLTE0MiwxMCArMTQy
LDkgQEAgdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgfQogfQogCi12
b2lkKiBXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1ZXVl
KQordm9pZCBXb3JrUXVldWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKFdvcmtRdWV1ZSogd29ya1F1
ZXVlKQogewogICAgIHdvcmtRdWV1ZS0+d29ya1F1ZXVlVGhyZWFkQm9keSgpOwotICAgIHJldHVy
biAwOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6d29ya1F1ZXVlVGhyZWFkQm9keSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5jaGVy
TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9UaHJlYWRMYXVu
Y2hlck1hYy5tbQppbmRleCBkZDUzYjNlLi43YzAxMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1RocmVhZExhdW5jaGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvVGhyZWFkTGF1bmNoZXJNYWMubW0K
QEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQorc3Rh
dGljIHZvaWQgd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQogewogICAgIG1hY2hfcG9ydF90
IHNlcnZlclBvcnQgPSBzdGF0aWNfY2FzdDxtYWNoX3BvcnRfdD4ocmVpbnRlcnByZXRfY2FzdDx1
aW50cHRyX3Q+KGNvbnRleHQpKTsKIApAQCAtNTIsOCArNTIsNiBAQCBzdGF0aWMgdm9pZCogd2Vi
VGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQogICAgIFtwb29sIGRyYWluXTsKIAogICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS0+cnVuKCk7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBUaHJlYWRMYXVuY2hlcjo6Y3JlYXRlV2ViVGhyZWFkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9UaHJlYWRMYXVu
Y2hlclF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9UaHJlYWRM
YXVuY2hlclF0LmNwcAppbmRleCAxZDBjYWYzLi4zN2QwNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1RocmVhZExhdW5jaGVyUXQuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotc3RhdGljIHZvaWQqIHdlYlRocmVhZEJvZHkodm9pZCogLyogY29udGV4dCAq
LykKK3N0YXRpYyB2b2lkIHdlYlRocmVhZEJvZHkodm9pZCogLyogY29udGV4dCAqLykKIHsKICAg
ICAvLyBJbml0aWFsaXphdGlvbgogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwpAQCAt
NTcsOCArNTcsNiBAQCBzdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiAvKiBjb250ZXh0
ICovKQogCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuaW5pdGlhbGl6ZSgtMSwgUnVuTG9vcDo6
Y3VycmVudCgpKTsKICAgICBSdW5Mb29wOjpydW4oKTsKLQotICAgIHJldHVybiAwOwogfQogCiBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIFRocmVhZExhdW5jaGVyOjpjcmVhdGVXZWJU
aHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3dp
bi9UaHJlYWRMYXVuY2hlcldpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNo
ZXIvd2luL1RocmVhZExhdW5jaGVyV2luLmNwcAppbmRleCBmOWQxYzA0Li41YWJlYzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1RocmVhZExhdW5j
aGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Ro
cmVhZExhdW5jaGVyV2luLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkKiB3ZWJUaHJlYWRCb2R5
KHZvaWQqIGNvbnRleHQpCitzdGF0aWMgdm9pZCB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNvbnRleHQp
CiB7CiAgICAgSEFORExFIGNsaWVudElkZW50aWZpZXIgPSByZWludGVycHJldF9jYXN0PEhBTkRM
RT4oY29udGV4dCk7CiAKQEAgLTQ2LDggKzQ2LDYgQEAgc3RhdGljIHZvaWQqIHdlYlRocmVhZEJv
ZHkodm9pZCogY29udGV4dCkKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUo
Y2xpZW50SWRlbnRpZmllciwgUnVuTG9vcDo6Y3VycmVudCgpKTsKICAgICBSdW5Mb29wOjpydW4o
KTsKLQotICAgIHJldHVybiAwOwogfQogCiBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IFRocmVhZExhdW5jaGVyOjpjcmVhdGVXZWJUaHJlYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDA5ODEwNy4uMmNmMmFmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIHZv
aWQgc2xlZXAodW5zaWduZWQgc2Vjb25kcykKIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCogcmFu
ZG9tQ3Jhc2hUaHJlYWQodm9pZCopCitzdGF0aWMgdm9pZCByYW5kb21DcmFzaFRocmVhZCh2b2lk
KikKIHsKICAgICAvLyBUaGlzIGRlbGF5IHdhcyBjaG9zZW4gc2VtaS1hcmJpdHJhcmlseS4gV2Ug
d2FudCB0aGUgY3Jhc2ggdG8gaGFwcGVuIHNvbWV3aGF0IHF1aWNrbHkgdG8KICAgICAvLyBlbmFi
bGUgdXNlZnVsIHN0cmVzcyB0ZXN0aW5nLCBidXQgbm90IHNvIHF1aWNrbHkgdGhhdCB0aGUgd2Vi
IHByb2Nlc3Mgd2lsbCBhbHdheXMgY3Jhc2ggc29vbgpAQCAtMTA5LDcgKzEwOSw2IEBAIHN0YXRp
YyB2b2lkKiByYW5kb21DcmFzaFRocmVhZCh2b2lkKikKIAogICAgIHNsZWVwKHJhbmRvbU51bWJl
cigpICogbWF4aW11bVJhbmRvbUNyYXNoRGVsYXkpOwogICAgIENSQVNIKCk7Ci0gICAgcmV0dXJu
IDA7CiB9CiAKIHN0YXRpYyB2b2lkIHN0YXJ0UmFuZG9tQ3Jhc2hUaHJlYWRJZlJlcXVlc3RlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggNzY4MzBlMC4uODRmY2QyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgpAQCAtMTE2LDYgKzExNiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2FkY2Fz
dEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJlYWRA
V1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBB
WFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFowUEJE
QFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNoVGhy
ZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFha
CkBAIC0xMzEsNiArMTMyLDcgQEAgRVhQT1JUUwogICAgICAgICA/dW5sb2NrQE11dGV4QFdURkBA
UUFFWFhaCiAgICAgICAgID91bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBX
VEZAQFlBWFhaCiAgICAgICAgID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRl
eEAyQEBaCisgICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElAWgogICAg
ICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJUEFQQVhAWgogICAgICAgICA/
Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKICAgICAgICAgOyBSZS1leHBvcnRz
IGZyb20gV2ViQ29yZSBmb3IgdGVzdCBoYXJuZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgppbmRleCAzYTkyN2MyLi4wNTE3ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCkBAIC0xMDksNiArMTA5LDcgQEAgRVhQT1JUUwogICAgICAgICA/YnJvYWRjYXN0
QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgogICAgICAgICA/Y2FsbE9uTWFpblRocmVhZEBX
VEZAQFlBWFA2QVhQQVhAWjBAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFY
UEFYQFowUEJEQFoKKyAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhAWjBQQkRA
WgogICAgICAgICA/Y3VycmVudFRocmVhZEBXVEZAQFlBSVhaCiAgICAgICAgID9kZXRhY2hUaHJl
YWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFkQFdURkBAWUFYWFoK
QEAgLTEyNCw2ICsxMjUsNyBAQCBFWFBPUlRTCiAgICAgICAgID91bmxvY2tATXV0ZXhAV1RGQEBR
QUVYWFoKICAgICAgICAgP3VubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdU
RkBAWUFYWFoKICAgICAgICAgP3dhaXRAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWEFBVk11dGV4
QDJAQFoKKyAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISUBaCiAgICAg
ICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkBXVEZAQFlBSElQQVBBWEBaCiAgICAgICAgID9j
cmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBAWgogCg==
</data>
<flag name="review"
          id="129210"
          type_id="1"
          status="-"
          setter="aroben"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127602</attachid>
            <date>2012-02-17 09:09:14 -0800</date>
            <delta_ts>2012-02-17 13:55:15 -0800</delta_ts>
            <desc>Patch v5</desc>
            <filename>wtf_threading_api5.patch</filename>
            <type>text/plain</type>
            <size>55004</size>
            <attacher name="Kalev Lember">kalevlember</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNkZDIwMTIuLjViNjdiMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAyLTE0ICBLYWxldiBMZW1iZXIg
IDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBwYXJhbWV0
ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24oKSBoYWQgYW4gb3V0IHBh
cmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAgICd2b2lkIConIHJldHVybmVk
IGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaW4KKyAgICAg
ICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFyYW0sIG5vdCBmaWxsaW5nIGl0
IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRpb24gd2hlcmUgbm9uZSBvZiB0
aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisgICAgICAgIGFuZCBqdXN0IGln
bm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwgdGhlIHBhdGNoIGNoYW5nZXMg
dGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAgICAgICByZXR1cm4gdm9pZCBp
bnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNlZCAndm9pZCAqKnJlc3VsdCcK
KyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENvbXBsZXRpb24uIEFsc28sIGFs
bCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0aGUgQVBJIGNoYW5nZS4KKwor
ICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhlIGNoYW5nZSBvbmx5IGFmZmVj
dHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAgICAgICAgZGlyZWN0bHkgYW5k
IHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFyb3VuZCBmb3IgQUJJCisgICAg
ICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2ggYWRkcyBjb21wYXRpYmlsaXR5
IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS5vcmRlcjoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmOgorICAgICAgICAqIGJ5dGVjb2RlL1NhbXBsaW5nVG9v
bC5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmMpOgor
ICAgICAgICAoSlNDOjpTYW1wbGluZ1RocmVhZDo6c3RvcCk6CisgICAgICAgICogYnl0ZWNvZGUv
U2FtcGxpbmdUb29sLmg6CisgICAgICAgIChTYW1wbGluZ1RocmVhZCk6CisgICAgICAgICogaGVh
cC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6fkhlYXApOgorICAgICAgICAoSlNDOjpI
ZWFwOjpibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmMpOgorICAgICAgICAqIGhlYXAvSGVhcC5o
OgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
VGhyZWFkU2hhcmVkRGF0YTo6bWFya2luZ1RocmVhZFN0YXJ0RnVuYyk6CisgICAgICAgIChKU0M6
Ok1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6On5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKToK
KyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5oOgorICAgICAgICAoTWFya1N0YWNrVGhyZWFkU2hh
cmVkRGF0YSk6CisgICAgICAgICogd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwOgorICAgICAg
ICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQp
OgorICAgICAgICAqIHd0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgIChUaHJlYWRQ
cml2YXRlKToKKyAgICAgICAgKiB3dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmg6IFVwZGF0
ZSB0aGUgc2lnbmF0dXJlIG9mCisgICAgICAgIFRocmVhZEZ1bmN0aW9uLgorICAgICAgICAoV1RG
KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKFdURjo6dGhyZWFkRW50
cnlQb2ludCk6IFVwZGF0ZSBmb3IgVGhyZWFkRnVuY3Rpb24gc2lnbmF0dXJlIGNoYW5nZS4KKyAg
ICAgICAgKFdURik6CisgICAgICAgIChXVEY6OlRocmVhZEZ1bmN0aW9uV2l0aFJldHVyblZhbHVl
SW52b2NhdGlvbjo6VGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWVJbnZvY2F0aW9uKToKKyAg
ICAgICAgQUJJIGNvbXBhdGliaWxpdHkgZnVuY3Rpb24gZm9yIFNhZmFyaS4KKyAgICAgICAgKFRo
cmVhZEZ1bmN0aW9uV2l0aFJldHVyblZhbHVlSW52b2NhdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RGOjpjb21wYXRFbnRyeVBvaW50KTogRGl0dG8uCisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVh
ZCk6IERpdHRvLgorICAgICAgICAoV1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbik6IERpdHRv
LgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmcuaDogVXBkYXRlIHRoZSBzaWduYXR1cmUgb2YgVGhy
ZWFkRnVuY3Rpb24gYW5kCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uLgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nUHRocmVhZHMuY3BwOiBJbXBsZW1lbnQg
dGhlIG5ldyBBUEkuCisgICAgICAgIChXVEY6Ond0ZlRocmVhZEVudHJ5UG9pbnQpOgorICAgICAg
ICAoV1RGKToKKyAgICAgICAgKFdURjo6Y3JlYXRlVGhyZWFkSW50ZXJuYWwpOgorICAgICAgICAo
V1RGOjp3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbik6CisgICAgICAgICogd3RmL1RocmVhZGluZ1dp
bi5jcHA6IEltcGxlbWVudCB0aGUgbmV3IEFQSS4KKyAgICAgICAgKFdURjo6d3RmVGhyZWFkRW50
cnlQb2ludCk6CisgICAgICAgIChXVEY6OndhaXRGb3JUaHJlYWRDb21wbGV0aW9uKToKKwogMjAx
Mi0wMi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgbm90IGNoZWNrIHRoZSB0eXBlcyBvZiBhcmd1bWVudHMgdGhhdCBhcmUgZGVhZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCmluZGV4IDZmYmNhN2YuLmUx
ZTFmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5v
cmRlcgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIKQEAg
LTU4LDYgKzU4LDcgQEAgX19aTjNXVEY1TXV0ZXg2dW5sb2NrRXYKIF9fWk4zV1RGMTBTdHJpbmdJ
bXBsMTJzaGFyZWRCdWZmZXJFdgogX19aTjNXVEYxMFN0cmluZ0ltcGw4ZW5kc1dpdGhFUFMwX2IK
IF9fWk4zV1RGMTJjcmVhdGVUaHJlYWRFUEZQdlMwX0VTMF9QS2MKK19fWk4zV1RGMTJjcmVhdGVU
aHJlYWRFUEZ2UHZFUzBfUEtjCiBfX1pOM1dURjIwY3JlYXRlVGhyZWFkSW50ZXJuYWxFUEZQdlMw
X0VTMF9QS2MKIF9fWk4zV1RGTDM1ZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRIYW5kbGVF
UktQMTdfb3BhcXVlX3B0aHJlYWRfdAogX19aTjNXVEY5SGFzaFRhYmxlSWpTdDRwYWlySWpQMTdf
b3BhcXVlX3B0aHJlYWRfdEVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNF9FRU5TXzdJbnRIYXNo
SWpFRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSWpFRU5TQV9JUzNfRUVFRVNC
X0U2cmVoYXNoRWkKQEAgLTExNTMsNiArMTE1NCw3IEBAIF9fWk4zV1RGMTBmYXN0U3RyRHVwRVBL
YwogX19aTjNKU0MxMElkZW50aWZpZXIxMWFkZFNsb3dDYXNlRVBOU18xMkpTR2xvYmFsRGF0YUVQ
TjNXVEYxMFN0cmluZ0ltcGxFCiBfSlNTdHJpbmdSZXRhaW4KIF9fX2luaXRpYWxpemVTY2F2ZW5n
ZXJfYmxvY2tfaW52b2tlXzEKK19fWk4zV1RGMjN3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbkVqCiBf
X1pOM1dURjIzd2FpdEZvclRocmVhZENvbXBsZXRpb25FalBQdgogX0pTT2JqZWN0Q29weVByb3Bl
cnR5TmFtZXMKIF9fWk4zSlNDOEpTT2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0
YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RU5TXzE1RW51bWVyYXRpb25Nb2RlRQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCBm
M2JkOGIwLi44OWM1YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMTIzLDYgKzEyMyw3IEBAIEVYUE9SVFMKICAgICA/Y3Jl
YXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAQUJFWFBBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2Ny
ZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCiAgICAgP2NyZWF0ZVRocmVhZEBXVEZA
QFlBSVA2QVBBWFBBWEBaMFBCREBaCisgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVhQQVhA
WjBQQkRAWgogICAgID9jcmVhdGVUeXBlRXJyb3JASlNDQEBZQVBBVkpTT2JqZWN0QDFAUEFWRXhl
Y1N0YXRlQDFAQUJWVVN0cmluZ0AxQEBaCiAgICAgP2NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyQFdURkBAWUFJWFoKICAgICA/Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXNAV1RGQEBZ
QVhQQVhJQFoKQEAgLTM2Miw2ICszNjMsNyBAQCBFWFBPUlRTCiAgICAgP3Zpc2l0Q2hpbGRyZW5A
SlNHbG9iYWxUaGlzQEpTQ0BAS0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0b3JAMkBAWgogICAg
ID92aXNpdENoaWxkcmVuQEpTT2JqZWN0QEpTQ0BAU0FYUEFWSlNDZWxsQDJAQUFWU2xvdFZpc2l0
b3JAMkBAWgogICAgID93YWl0QFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhBQVZNdXRleEAyQEBa
CisgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISUBaCiAgICAgP3dhaXRGb3JU
aHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoKICAgICA/d3JpdGFibGVAUHJvcGVydHlE
ZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgogICAgID93cml0ZUJhcnJpZXJASGFuZGxlSGVhcEBKU0NA
QFFBRVhQQVZKU1ZhbHVlQDJAQUJWMzJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKaW5kZXggNjQzMTMxOS4uMDc3ZjA0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKQEAgLTIxMCw3
ICsyMTAsNyBAQCBib29sIFNhbXBsaW5nVGhyZWFkOjpzX3J1bm5pbmcgPSBmYWxzZTsKIHVuc2ln
bmVkIFNhbXBsaW5nVGhyZWFkOjpzX2hlcnR6ID0gMTAwMDA7CiBUaHJlYWRJZGVudGlmaWVyIFNh
bXBsaW5nVGhyZWFkOjpzX3NhbXBsaW5nVGhyZWFkOwogCi12b2lkKiBTYW1wbGluZ1RocmVhZDo6
dGhyZWFkU3RhcnRGdW5jKHZvaWQqKQordm9pZCBTYW1wbGluZ1RocmVhZDo6dGhyZWFkU3RhcnRG
dW5jKHZvaWQqKQogewogICAgIHdoaWxlIChzX3J1bm5pbmcpIHsKICAgICAgICAgc2xlZXBGb3JN
aWNyb3NlY29uZHMoaGVydHoydXMoc19oZXJ0eikpOwpAQCAtMjI1LDggKzIyNSw2IEBAIHZvaWQq
IFNhbXBsaW5nVGhyZWFkOjp0aHJlYWRTdGFydEZ1bmModm9pZCopCiAgICAgICAgIFNhbXBsaW5n
VG9vbDo6c2FtcGxlKCk7CiAjZW5kaWYKICAgICB9Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogCkBA
IC0yNDMsNyArMjQxLDcgQEAgdm9pZCBTYW1wbGluZ1RocmVhZDo6c3RvcCgpCiB7CiAgICAgQVNT
RVJUKHNfcnVubmluZyk7CiAgICAgc19ydW5uaW5nID0gZmFsc2U7Ci0gICAgd2FpdEZvclRocmVh
ZENvbXBsZXRpb24oc19zYW1wbGluZ1RocmVhZCwgMCk7CisgICAgd2FpdEZvclRocmVhZENvbXBs
ZXRpb24oc19zYW1wbGluZ1RocmVhZCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCmluZGV4IDMyYTQ0YWQuLjI4ZmQ1MjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmgKQEAgLTIyMyw3ICsy
MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgc3RhcnQodW5zaWduZWQgaGVydHo9MTAwMDApOwogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBzdGF0aWMgdm9pZCBzdG9wKCk7CiAKLSAgICAgICAgc3RhdGljIHZvaWQqIHRocmVhZFN0
YXJ0RnVuYyh2b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHRocmVhZFN0YXJ0RnVuYyh2b2lk
Kik7CiAgICAgfTsKIAogICAgIGNsYXNzIFNhbXBsaW5nVG9vbCB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCmluZGV4IDhlMTBiZDUuLjRlMTMwNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgSGVhcDo6fkhlYXAoKQogICAgICAgICBt
X2Jsb2NrRnJlZWluZ1RocmVhZFNob3VsZFF1aXQgPSB0cnVlOwogICAgICAgICBtX2ZyZWVCbG9j
a0NvbmRpdGlvbi5icm9hZGNhc3QoKTsKICAgICB9Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRp
b24obV9ibG9ja0ZyZWVpbmdUaHJlYWQsIDApOworICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9u
KG1fYmxvY2tGcmVlaW5nVGhyZWFkKTsKIAogICAgIC8vIFRoZSBkZXN0cm95IGZ1bmN0aW9uIG11
c3QgYWxyZWFkeSBoYXZlIGJlZW4gY2FsbGVkLCBzbyBhc3NlcnQgdGhpcy4KICAgICBBU1NFUlQo
IW1fZ2xvYmFsRGF0YSk7CkBAIC00MDcsMTAgKzQwNyw5IEBAIHZvaWQgSGVhcDo6d2FpdEZvclJl
bGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUpCiAgICAgd2FpdEZvclJlbGF0aXZlVGltZVdoaWxl
SG9sZGluZ0xvY2socmVsYXRpdmUpOwogfQogCi12b2lkKiBIZWFwOjpibG9ja0ZyZWVpbmdUaHJl
YWRTdGFydEZ1bmModm9pZCogaGVhcCkKK3ZvaWQgSGVhcDo6YmxvY2tGcmVlaW5nVGhyZWFkU3Rh
cnRGdW5jKHZvaWQqIGhlYXApCiB7CiAgICAgc3RhdGljX2Nhc3Q8SGVhcCo+KGhlYXApLT5ibG9j
a0ZyZWVpbmdUaHJlYWRNYWluKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgSGVhcDo6Ymxv
Y2tGcmVlaW5nVGhyZWFkTWFpbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggODdh
MjBhMC4uYmFjMDg3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMTg3LDcgKzE4
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHdhaXRGb3JSZWxhdGl2ZVRpbWVX
aGlsZUhvbGRpbmdMb2NrKGRvdWJsZSByZWxhdGl2ZSk7CiAgICAgICAgIHZvaWQgd2FpdEZvclJl
bGF0aXZlVGltZShkb3VibGUgcmVsYXRpdmUpOwogICAgICAgICB2b2lkIGJsb2NrRnJlZWluZ1Ro
cmVhZE1haW4oKTsKLSAgICAgICAgc3RhdGljIHZvaWQqIGJsb2NrRnJlZWluZ1RocmVhZFN0YXJ0
RnVuYyh2b2lkKiBoZWFwKTsKKyAgICAgICAgc3RhdGljIHZvaWQgYmxvY2tGcmVlaW5nVGhyZWFk
U3RhcnRGdW5jKHZvaWQqIGhlYXApOwogICAgICAgICAKICAgICAgICAgY29uc3QgSGVhcFNpemUg
bV9oZWFwU2l6ZTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IDlhMzA5MjMuLjEzZDMy
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcApAQCAtMjI2LDEw
ICsyMjYsOSBAQCB2b2lkIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Om1hcmtpbmdUaHJlYWRN
YWluKCkKICAgICBzbG90VmlzaXRvci5kcmFpbkZyb21TaGFyZWQoU2xvdFZpc2l0b3I6OlNsYXZl
RHJhaW4pOwogfQogCi12b2lkKiBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhy
ZWFkU3RhcnRGdW5jKHZvaWQqIHNoYXJlZCkKK3ZvaWQgTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0
YTo6bWFya2luZ1RocmVhZFN0YXJ0RnVuYyh2b2lkKiBzaGFyZWQpCiB7CiAgICAgc3RhdGljX2Nh
c3Q8TWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSo+KHNoYXJlZCktPm1hcmtpbmdUaHJlYWRNYWlu
KCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAjZW5kaWYKIApAQCAtMjU4LDcgKzI1Nyw3IEBAIE1hcmtT
dGFja1RocmVhZFNoYXJlZERhdGE6On5NYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhKCkKICAgICAg
ICAgbV9tYXJraW5nQ29uZGl0aW9uLmJyb2FkY2FzdCgpOwogICAgIH0KICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9tYXJraW5nVGhyZWFkcy5zaXplKCk7ICsraSkKLSAgICAgICAgd2Fp
dEZvclRocmVhZENvbXBsZXRpb24obV9tYXJraW5nVGhyZWFkc1tpXSwgMCk7CisgICAgICAgIHdh
aXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fbWFya2luZ1RocmVhZHNbaV0pOwogI2VuZGlmCiB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCmluZGV4IDY5MjNjZGQuLjMw
MTk1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5oCkBAIC0xNzgsNyAr
MTc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAgICAg
ICAgIHZvaWQgbWFya2luZ1RocmVhZE1haW4oKTsKLSAgICAgICAgc3RhdGljIHZvaWQqIG1hcmtp
bmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCk7CisgICAgICAgIHN0YXRpYyB2b2lkIG1hcmtp
bmdUaHJlYWRTdGFydEZ1bmModm9pZCogaGVhcCk7CiAjZW5kaWYKIAogICAgICAgICBKU0dsb2Jh
bERhdGEqIG1fZ2xvYmFsRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bh
cmFsbGVsSm9ic0dlbmVyaWMuY3BwCmluZGV4IGZkNWIxZjguLjJjYzBiYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcApAQCAtMTIx
LDcgKzEyMSw3IEBAIHZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d2Fp
dEZvckZpbmlzaCgpCiAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLndhaXQobV9tdXRleCk7CiB9
CiAKLXZvaWQqIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVh
ZCh2b2lkKiB0aHJlYWREYXRhKQordm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2
YXRlOjp3b3JrZXJUaHJlYWQodm9pZCogdGhyZWFkRGF0YSkKIHsKICAgICBUaHJlYWRQcml2YXRl
KiBzaGFyZWRUaHJlYWQgPSByZWludGVycHJldF9jYXN0PFRocmVhZFByaXZhdGUqPih0aHJlYWRE
YXRhKTsKICAgICBNdXRleExvY2tlciBsb2NrKHNoYXJlZFRocmVhZC0+bV9tdXRleCk7CkBAIC0x
MzYsNyArMTM2LDYgQEAgdm9pZCogUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6
d29ya2VyVGhyZWFkKHZvaWQqIHRocmVhZERhdGEpCiAKICAgICAgICAgc2hhcmVkVGhyZWFkLT5t
X3RocmVhZENvbmRpdGlvbi53YWl0KHNoYXJlZFRocmVhZC0+bV9tdXRleCk7CiAgICAgfQotICAg
IHJldHVybiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgKaW5kZXggMWM3ZDYzYy4uNmRlNzEwNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmlj
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUaHJlYWRQcml2YXRlKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQqIHdv
cmtlclRocmVhZCh2b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHdvcmtlclRocmVhZCh2b2lk
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBUaHJlYWRJZGVudGlmaWVyIG1fdGhyZWFkSUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZEZ1bmN0aW9uSW52
b2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRGdW5jdGlvbkludm9j
YXRpb24uaAppbmRleCBmMWUxNDcyLi4yZDg1OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZEZ1bmN0aW9uSW52b2NhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uLmgKQEAgLTMxLDcgKzMxLDcg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXR5cGVkZWYgdm9pZCogKCpUaHJlYWRGdW5jdGlvbiko
dm9pZCogYXJndW1lbnQpOwordHlwZWRlZiB2b2lkICgqVGhyZWFkRnVuY3Rpb24pKHZvaWQqIGFy
Z3VtZW50KTsKIAogc3RydWN0IFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbiB7CiAgICAgVGhyZWFk
RnVuY3Rpb25JbnZvY2F0aW9uKFRocmVhZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IGQ4ZGJiYWUuLjhkNjU4
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5jcHAKQEAgLTI1LDYgKzI1
LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRocmVhZGluZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAKQEAgLTQ3LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIE11dGV4IGNy
ZWF0aW9uTXV0ZXg7CiB9OwogCi1zdGF0aWMgdm9pZCogdGhyZWFkRW50cnlQb2ludCh2b2lkKiBj
b250ZXh0RGF0YSkKK3N0YXRpYyB2b2lkIHRocmVhZEVudHJ5UG9pbnQodm9pZCogY29udGV4dERh
dGEpCiB7CiAgICAgTmV3VGhyZWFkQ29udGV4dCogY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8
TmV3VGhyZWFkQ29udGV4dCo+KGNvbnRleHREYXRhKTsKIApAQCAtNjQsNyArNjYsNyBAQCBzdGF0
aWMgdm9pZCogdGhyZWFkRW50cnlQb2ludCh2b2lkKiBjb250ZXh0RGF0YSkKICAgICB2b2lkKiBk
YXRhID0gY29udGV4dC0+ZGF0YTsKICAgICBkZWxldGUgY29udGV4dDsKIAotICAgIHJldHVybiBl
bnRyeVBvaW50KGRhdGEpOworICAgIGVudHJ5UG9pbnQoZGF0YSk7CiB9CiAKIFRocmVhZElkZW50
aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEs
IGNvbnN0IGNoYXIqIG5hbWUpCkBAIC04NiwxNCArODgsNTggQEAgVGhyZWFkSWRlbnRpZmllciBj
cmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3Qg
Y2hhcioKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQogCisvLyBGb3IgQUJJ
IGNvbXBhdGliaWxpdHkgd2l0aCBTYWZhcmkgb24gTWFjIC8gV2luZG93czogU2FmYXJpIHVzZXMg
dGhlIHByaXZhdGUKKy8vIGNyZWF0ZVRocmVhZCgpIGFuZCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bigpIGZ1bmN0aW9ucyBkaXJlY3RseSBhbmQgd2UgbmVlZAorLy8gdG8ga2VlcCB0aGUgb2xkIEFC
SSBjb21wYXRpYmlsaXR5IHVudGlsIGl0J3MgYmVlbiByZWJ1aWx0LgorCit0eXBlZGVmIHZvaWQq
ICgqVGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWUpKHZvaWQqIGFyZ3VtZW50KTsKKworV1RG
X0VYUE9SVF9QUklWQVRFIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0
aW9uV2l0aFJldHVyblZhbHVlIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqIG5h
bWUpOworCitzdHJ1Y3QgVGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWVJbnZvY2F0aW9uIHsK
KyAgICBUaHJlYWRGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZUludm9jYXRpb24oVGhyZWFkRnVuY3Rp
b25XaXRoUmV0dXJuVmFsdWUgZnVuY3Rpb24sIHZvaWQqIGRhdGEpCisgICAgICAgIDogZnVuY3Rp
b24oZnVuY3Rpb24pCisgICAgICAgICwgZGF0YShkYXRhKQorICAgIHsKKyAgICB9CisKKyAgICBU
aHJlYWRGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZSBmdW5jdGlvbjsKKyAgICB2b2lkKiBkYXRhOwor
fTsKKworc3RhdGljIHZvaWQgY29tcGF0RW50cnlQb2ludCh2b2lkKiBwYXJhbSkKK3sKKyAgICAv
LyBCYWxhbmNlZCBieSAubGVha1B0cigpIGluIGNyZWF0ZVRocmVhZC4KKyAgICBPd25QdHI8VGhy
ZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWVJbnZvY2F0aW9uPiBpbnZvY2F0aW9uID0gYWRvcHRQ
dHIoc3RhdGljX2Nhc3Q8VGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWVJbnZvY2F0aW9uKj4o
cGFyYW0pKTsKKyAgICBpbnZvY2F0aW9uLT5mdW5jdGlvbihpbnZvY2F0aW9uLT5kYXRhKTsKK30K
KworVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJu
VmFsdWUgZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBP
d25QdHI8VGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWVJbnZvY2F0aW9uPiBpbnZvY2F0aW9u
ID0gYWRvcHRQdHIobmV3IFRocmVhZEZ1bmN0aW9uV2l0aFJldHVyblZhbHVlSW52b2NhdGlvbihl
bnRyeVBvaW50LCBkYXRhKSk7CisKKyAgICAvLyBCYWxhbmNlZCBieSBhZG9wdFB0cigpIGluIGNv
bXBhdEVudHJ5UG9pbnQuCisgICAgcmV0dXJuIGNyZWF0ZVRocmVhZChjb21wYXRFbnRyeVBvaW50
LCBpbnZvY2F0aW9uLmxlYWtQdHIoKSwgbmFtZSk7Cit9CisKK1dURl9FWFBPUlRfUFJJVkFURSBp
bnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciwgdm9pZCoqKTsKKwor
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZv
aWQqKikKK3sKKyAgICByZXR1cm4gd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkSUQpOwor
fQorCiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYnV0IG5lZWRzIHRvIGJlIGtlcHQg
YXJvdW5kIGZvciBiYWNrd2FyZAogLy8gY29tcGF0aWJpbGl0eS4gVXNlIHRoZSAzLWFyZ3VtZW50
IHZlcnNpb24gb2YgY3JlYXRlVGhyZWFkIGFib3ZlLgogCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGhy
ZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9p
ZCogZGF0YSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJl
YWQoVGhyZWFkRnVuY3Rpb25XaXRoUmV0dXJuVmFsdWUgZW50cnlQb2ludCwgdm9pZCogZGF0YSk7
CiAKLVRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9p
bnQsIHZvaWQqIGRhdGEpCitUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRGdW5j
dGlvbldpdGhSZXR1cm5WYWx1ZSBlbnRyeVBvaW50LCB2b2lkKiBkYXRhKQogewotICAgIHJldHVy
biBjcmVhdGVUaHJlYWQoZW50cnlQb2ludCwgZGF0YSwgMCk7CisgICAgT3duUHRyPFRocmVhZEZ1
bmN0aW9uV2l0aFJldHVyblZhbHVlSW52b2NhdGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKG5l
dyBUaHJlYWRGdW5jdGlvbldpdGhSZXR1cm5WYWx1ZUludm9jYXRpb24oZW50cnlQb2ludCwgZGF0
YSkpOworCisgICAgLy8gQmFsYW5jZWQgYnkgYWRvcHRQdHIoKSBpbiBjb21wYXRFbnRyeVBvaW50
LgorICAgIHJldHVybiBjcmVhdGVUaHJlYWQoY29tcGF0RW50cnlQb2ludCwgaW52b2NhdGlvbi5s
ZWFrUHRyKCksIDApOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGlu
Zy5oCmluZGV4IDFkZWU1ZGEuLmI1ZDQzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmcuaApAQCAtNzgsNyArNzgsNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIHR5cGVkZWYgdWlu
dDMyX3QgVGhyZWFkSWRlbnRpZmllcjsKLXR5cGVkZWYgdm9pZCogKCpUaHJlYWRGdW5jdGlvbiko
dm9pZCogYXJndW1lbnQpOwordHlwZWRlZiB2b2lkICgqVGhyZWFkRnVuY3Rpb24pKHZvaWQqIGFy
Z3VtZW50KTsKIAogLy8gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWlu
IHRocmVhZC4gSXQgaXMgc2FmZSB0byBjYWxsIGl0IHJlcGVhdGVkbHkuCiAvLyBEYXJ3aW4gaXMg
YW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0
aHJlYWQsIHRoZSBvbmx5IApAQCAtOTcsNyArOTcsNyBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0
ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciogdGhyZWFk
Tgogdm9pZCBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFsKGNvbnN0IGNoYXIqIHRocmVh
ZE5hbWUpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgVGhyZWFkSWRlbnRpZmllciBjdXJyZW50VGhy
ZWFkKCk7Ci1XVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRo
cmVhZElkZW50aWZpZXIsIHZvaWQqKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgaW50IHdhaXRGb3JU
aHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50aWZpZXIpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCB5aWVsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJl
YWRpbmdQdGhyZWFkcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcAppbmRleCA3NjNlYzJiLi5hYmQzNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcApAQCAtNDAsOSArNDAsMTIgQEAKICNp
bmNsdWRlICJIYXNoTWFwLmgiCiAjaW5jbHVkZSAiUmFuZG9tTnVtYmVyU2VlZC5oIgogI2luY2x1
ZGUgIlN0ZExpYkV4dHJhcy5oIgorI2luY2x1ZGUgIlRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbi5o
IgogI2luY2x1ZGUgIlRocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuaCIKICNpbmNsdWRlICJU
aHJlYWRTcGVjaWZpYy5oIgogI2luY2x1ZGUgIlVudXNlZFBhcmFtLmgiCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dU
RlRocmVhZERhdGEuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogCkBAIC0xNTIsNiArMTU1LDE1IEBA
IHZvaWQgY2xlYXJQdGhyZWFkSGFuZGxlRm9ySWRlbnRpZmllcihUaHJlYWRJZGVudGlmaWVyIGlk
KQogICAgIHRocmVhZE1hcCgpLnJlbW92ZShpZCk7CiB9CiAKK3N0YXRpYyB2b2lkKiB3dGZUaHJl
YWRFbnRyeVBvaW50KHZvaWQqIHBhcmFtKQoreworICAgIC8vIEJhbGFuY2VkIGJ5IC5sZWFrUHRy
KCkgaW4gY3JlYXRlVGhyZWFkSW50ZXJuYWwuCisgICAgT3duUHRyPFRocmVhZEZ1bmN0aW9uSW52
b2NhdGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PFRocmVhZEZ1bmN0aW9u
SW52b2NhdGlvbio+KHBhcmFtKSk7CisgICAgaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlv
bi0+ZGF0YSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVu
dHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUpCiB7CkBAIC0xNzEs
OCArMTgzLDkgQEAgVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWRJbnRlcm5hbChUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb24KICAgICAgICAgICAgIExPR19FUlJP
UigicHRocmVhZF9hdHRyX2dldHN0YWNrKCkgZmFpbGVkOiAlZCIsIGVycm5vKTsKICAgICB9CiAK
KyAgICBPd25QdHI8VGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uPiBpbnZvY2F0aW9uID0gYWRvcHRQ
dHIobmV3IFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbihlbnRyeVBvaW50LCBkYXRhKSk7CiAgICAg
cHRocmVhZF90IHRocmVhZEhhbmRsZTsKLSAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZEhh
bmRsZSwgJmF0dHIsIGVudHJ5UG9pbnQsIGRhdGEpKSB7CisgICAgaWYgKHB0aHJlYWRfY3JlYXRl
KCZ0aHJlYWRIYW5kbGUsICZhdHRyLCB3dGZUaHJlYWRFbnRyeVBvaW50LCBpbnZvY2F0aW9uLmdl
dCgpKSkgewogICAgICAgICBMT0dfRVJST1IoInB0aHJlYWRfY3JlYXRlKCkgZmFpbGVkOiAlZCIs
IGVycm5vKTsKICAgICAgICAgdGhyZWFkSGFuZGxlID0gMDsKICAgICB9CkBAIC0xODMsMTcgKzE5
NiwyNiBAQCBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0
aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbgogICAgIGlmICghdGhyZWFkSGFuZGxlKQog
ICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIEJhbGFuY2VkIGJ5IGFkb3B0UHRyKCkgaW4gd3Rm
VGhyZWFkRW50cnlQb2ludC4KKyAgICBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24qIGxlYWtlZElu
dm9jYXRpb24gPSBpbnZvY2F0aW9uLmxlYWtQdHIoKTsKKyAgICBVTlVTRURfUEFSQU0obGVha2Vk
SW52b2NhdGlvbik7CisKICAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclB0aHJlYWRI
YW5kbGUodGhyZWFkSGFuZGxlKTsKIH0KICNlbHNlCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRo
cmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0
IGNoYXIqKQogeworICAgIE93blB0cjxUaHJlYWRGdW5jdGlvbkludm9jYXRpb24+IGludm9jYXRp
b24gPSBhZG9wdFB0cihuZXcgVGhyZWFkRnVuY3Rpb25JbnZvY2F0aW9uKGVudHJ5UG9pbnQsIGRh
dGEpKTsKICAgICBwdGhyZWFkX3QgdGhyZWFkSGFuZGxlOwotICAgIGlmIChwdGhyZWFkX2NyZWF0
ZSgmdGhyZWFkSGFuZGxlLCAwLCBlbnRyeVBvaW50LCBkYXRhKSkgewotICAgICAgICBMT0dfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgcHRocmVhZCBhdCBlbnRyeSBwb2ludCAlcCB3aXRoIGRhdGEg
JXAiLCBlbnRyeVBvaW50LCBkYXRhKTsKKyAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZEhh
bmRsZSwgMCwgd3RmVGhyZWFkRW50cnlQb2ludCwgaW52b2NhdGlvbi5nZXQoKSkpIHsKKyAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIHB0aHJlYWQgYXQgZW50cnkgcG9pbnQgJXAg
d2l0aCBkYXRhICVwIiwgd3RmVGhyZWFkRW50cnlQb2ludCwgaW52b2NhdGlvbi5nZXQoKSk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIC8vIEJhbGFuY2VkIGJ5IGFkb3B0UHRyKCkg
aW4gd3RmVGhyZWFkRW50cnlQb2ludC4KKyAgICBUaHJlYWRGdW5jdGlvbkludm9jYXRpb24qIGxl
YWtlZEludm9jYXRpb24gPSBpbnZvY2F0aW9uLmxlYWtQdHIoKTsKKyAgICBVTlVTRURfUEFSQU0o
bGVha2VkSW52b2NhdGlvbik7CisKICAgICByZXR1cm4gZXN0YWJsaXNoSWRlbnRpZmllckZvclB0
aHJlYWRIYW5kbGUodGhyZWFkSGFuZGxlKTsKIH0KICNlbmRpZgpAQCAtMjE3LDcgKzIzOSw3IEBA
IHZvaWQgaW5pdGlhbGl6ZUN1cnJlbnRUaHJlYWRJbnRlcm5hbChjb25zdCBjaGFyKiB0aHJlYWRO
YW1lKQogICAgIFRocmVhZElkZW50aWZpZXJEYXRhOjppbml0aWFsaXplKGlkKTsKIH0KIAotaW50
IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZvaWQq
KiByZXN1bHQpCitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciB0
aHJlYWRJRCkKIHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogCkBAIC0yMjUsNyArMjQ3LDcgQEAg
aW50IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZv
aWQqKiByZXN1bHQpCiAgICAgaWYgKCFwdGhyZWFkSGFuZGxlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIGludCBqb2luUmVzdWx0ID0gcHRocmVhZF9qb2luKHB0aHJlYWRIYW5kbGUsIHJlc3Vs
dCk7CisgICAgaW50IGpvaW5SZXN1bHQgPSBwdGhyZWFkX2pvaW4ocHRocmVhZEhhbmRsZSwgMCk7
CiAgICAgaWYgKGpvaW5SZXN1bHQgPT0gRURFQURMSykKICAgICAgICAgTE9HX0VSUk9SKCJUaHJl
YWRJZGVudGlmaWVyICV1IHdhcyBmb3VuZCB0byBiZSBkZWFkbG9ja2VkIHRyeWluZyB0byBxdWl0
IiwgdGhyZWFkSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Ro
cmVhZGluZ1dpbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1dpbi5j
cHAKaW5kZXggYWMwZjczZi4uYmMzMjI2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
VGhyZWFkaW5nV2luLmNwcApAQCAtMjEwLDE0ICsyMTAsMTQgQEAgc3RhdGljIHZvaWQgY2xlYXJU
aHJlYWRIYW5kbGVGb3JJZGVudGlmaWVyKFRocmVhZElkZW50aWZpZXIgaWQpCiBzdGF0aWMgdW5z
aWduZWQgX19zdGRjYWxsIHd0ZlRocmVhZEVudHJ5UG9pbnQodm9pZCogcGFyYW0pCiB7CiAgICAg
T3duUHRyPFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbj4gaW52b2NhdGlvbiA9IGFkb3B0UHRyKHN0
YXRpY19jYXN0PFRocmVhZEZ1bmN0aW9uSW52b2NhdGlvbio+KHBhcmFtKSk7Ci0gICAgdm9pZCog
cmVzdWx0ID0gaW52b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7CisgICAgaW52
b2NhdGlvbi0+ZnVuY3Rpb24oaW52b2NhdGlvbi0+ZGF0YSk7CiAKICNpZiAhVVNFKFBUSFJFQURT
KSAmJiBPUyhXSU5ET1dTKQogICAgIC8vIERvIHRoZSBUTFMgY2xlYW51cC4KICAgICBUaHJlYWRT
cGVjaWZpY1RocmVhZEV4aXQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQ+KHJlc3VsdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIFRocmVhZElkZW50aWZp
ZXIgY3JlYXRlVGhyZWFkSW50ZXJuYWwoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCog
ZGF0YSwgY29uc3QgY2hhciogdGhyZWFkTmFtZSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBUaHJlYWRJ
ZGVudGlmaWVyIGNyZWF0ZVRocmVhZEludGVybmFsKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQs
IHZvaWQqIGRhdGEsIGNvbgogICAgIHJldHVybiB0aHJlYWRJRDsKIH0KIAotaW50IHdhaXRGb3JU
aHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQsIHZvaWQqKiByZXN1bHQp
CitpbnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCkK
IHsKICAgICBBU1NFUlQodGhyZWFkSUQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxZDcxYjQuLjky
MTUxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxMi0wMi0xNCAgS2FsZXYgTGVt
YmVyICA8a2FsZXZsZW1iZXJAZ21haWwuY29tPgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgcGFy
YW1ldGVycyBmcm9tIFdURiB0aHJlYWRpbmcgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODM4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKCkgaGFkIGFuIG91
dCBwYXJhbSAndm9pZCAqKnJlc3VsdCcgdG8gZ2V0IHRoZQorICAgICAgICAndm9pZCAqJyByZXR1
cm5lZCBieSBUaHJlYWRGdW5jdGlvbi4gSG93ZXZlciwgdGhlIGltcGxlbWVudGF0aW9uIGluCisg
ICAgICAgIFRocmVhZGluZ1dpbi5jcHAgaWdub3JlZCB0aGUgb3V0IHBhcmFtLCBub3QgZmlsbGlu
ZyBpdCBpbi4gVGhpcyBoYWQKKyAgICAgICAgbGVkIHRvIGEgc2l0dWF0aW9uIHdoZXJlIG5vbmUg
b2YgdGhlIGNsaWVudCBjb2RlIG1hZGUgdXNlIG9mIHRoZSBwYXJhbQorICAgICAgICBhbmQganVz
dCBpZ25vcmVkIGl0LgorCisgICAgICAgIFRvIGNsZWFuIHRoaXMgdXAsIHRoZSBwYXRjaCBjaGFu
Z2VzIHRoZSBzaWduYXR1cmUgb2YgVGhyZWFkRnVuY3Rpb24gdG8KKyAgICAgICAgcmV0dXJuIHZv
aWQgaW5zdGVhZCBvZiB2b2lkKiBhbmQgZHJvcHMgdGhlIHRoZSB1bnVzZWQgJ3ZvaWQgKipyZXN1
bHQnCisgICAgICAgIHBhcmFtZXRlciBmcm9tIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uLiBBbHNv
LCBhbGwgY2xpZW50IGNvZGUgaXMKKyAgICAgICAgdXBkYXRlZCBmb3IgdGhlIEFQSSBjaGFuZ2Uu
CisKKyAgICAgICAgQXMgbWVudGlvbmVkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODM4OSAsIGV2ZW4KKyAgICAgICAgdGhvdWdoIHRoZSBjaGFuZ2Ugb25seSBh
ZmZlY3RzIGludGVybmFsIEFQSSwgU2FmYXJpIGlzIHVzaW5nIGl0CisgICAgICAgIGRpcmVjdGx5
IGFuZCB3ZSdsbCBuZWVkIHRvIGtlZXAgdGhlIG9sZCB2ZXJzaW9ucyBhcm91bmQgZm9yIEFCSQor
ICAgICAgICBjb21wYXRpYmlsaXR5LiBGb3IgdGhpcywgdGhlIHBhdGNoIGFkZHMgY29tcGF0aWJp
bGl0eSB3cmFwcGVycyB3aXRoCisgICAgICAgIHRoZSBvbGQgQUJJLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRl
VGhyZWFkRm9yRGVidWdnaW5nKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVRocmVhZDo6ZmlsZVRocmVhZFN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVUaHJlYWQ6OnJ1bkxvb3ApOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVRo
cmVhZC5oOgorICAgICAgICAoRmlsZVRocmVhZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3Rh
cnQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6c3luY1RocmVhZE1haW5Mb29w
KToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaDoKKyAgICAgICAgKEljb25E
YXRhYmFzZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQ2FsbGJhY2spOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oOgorICAgICAgICAoU2Nyb2xs
aW5nVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VMb2FkZXJFbnRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OndhaXRGb3JMb2FkZXJUaHJlYWRDb21wbGV0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YmFja2dyb3VuZFRocmVhZEVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
dmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cnVuTG9hZGVy
VGhyZWFkKToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZFN0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCk6CisgICAgICAgICogc3Rv
cmFnZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAoRGF0YWJhc2VUaHJlYWQpOgorICAgICAg
ICAqIHN0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxv
Y2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2NhbFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSk6CisgICAgICAgICogc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaDoKKyAgICAgICAgKExvY2FsU3RvcmFnZVRocmVhZCk6Cisg
ICAgICAgICogd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkpOgorICAgICAgICAqIHdlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgIChBc3luY0F1ZGlvRGVjb2Rlcik6CisgICAg
ICAgICogd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyRW50cnkp
OgorICAgICAgICAqIHdlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRo
cmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFk
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAoV29ya2VyVGhy
ZWFkKToKKwogMjAxMi0wMi0xNiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tp
YS5jb20+CiAKICAgICAgICAgW0d0a11bRWZsXVtRdF0gTW92ZSBPcGVuR0xTaGltcyBvdXQgb2Yg
Y2Fpcm8vIHN1YmRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAKaW5kZXggNzY1ZTM2My4uY2Y3MGYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0zNiwxMSArMzYsMTAgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCogY29sbGVjdCh2
b2lkKikKK3N0YXRpYyB2b2lkIGNvbGxlY3Qodm9pZCopCiB7CiAgICAgSlNMb2NrIGxvY2soU2ls
ZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCktPmhlYXAuY29sbGVjdEFsbEdhcmJhZ2UoKTsKLSAgICByZXR1cm4gMDsKIH0KIAogR0NDb250
cm9sbGVyJiBnY0NvbnRyb2xsZXIoKQpAQCAtNzcsNyArNzYsNyBAQCB2b2lkIEdDQ29udHJvbGxl
cjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVnZ2luZyhib29sIHdhaXRV
bnRpbERvbgogICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjcmVhdGVUaHJlYWQoY29s
bGVjdCwgMCwgIldlYkNvcmU6IEdDQ29udHJvbGxlciIpOwogCiAgICAgaWYgKHdhaXRVbnRpbERv
bmUpIHsKLSAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24odGhyZWFkSUQsIDApOworICAg
ICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbih0aHJlYWRJRCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCmluZGV4IDRkNTU2MzAu
LjgyYmM2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcApAQCAtODMsMTMg
KzgzLDEzIEBAIHZvaWQgRmlsZVRocmVhZDo6dW5zY2hlZHVsZVRhc2tzKGNvbnN0IHZvaWQqIGlu
c3RhbmNlKQogICAgIG1fcXVldWUucmVtb3ZlSWYocHJlZGljYXRlKTsKIH0KIAotdm9pZCogRmls
ZVRocmVhZDo6ZmlsZVRocmVhZFN0YXJ0KHZvaWQqIGFyZykKK3ZvaWQgRmlsZVRocmVhZDo6Zmls
ZVRocmVhZFN0YXJ0KHZvaWQqIGFyZykKIHsKICAgICBGaWxlVGhyZWFkKiBmaWxlVGhyZWFkID0g
c3RhdGljX2Nhc3Q8RmlsZVRocmVhZCo+KGFyZyk7Ci0gICAgcmV0dXJuIGZpbGVUaHJlYWQtPnJ1
bkxvb3AoKTsKKyAgICBmaWxlVGhyZWFkLT5ydW5Mb29wKCk7CiB9CiAKLXZvaWQqIEZpbGVUaHJl
YWQ6OnJ1bkxvb3AoKQordm9pZCBGaWxlVGhyZWFkOjpydW5Mb29wKCkKIHsKICAgICB7CiAgICAg
ICAgIC8vIFdhaXQgZm9yIEZpbGVUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUgdG8gaGF2ZSBt
X3RocmVhZElECkBAIC0xMTAsOCArMTEwLDYgQEAgdm9pZCogRmlsZVRocmVhZDo6cnVuTG9vcCgp
CiAKICAgICAvLyBDbGVhciB0aGUgc2VsZiByZWZwdHIsIHBvc3NpYmx5IHJlc3VsdGluZyBpbiBk
ZWxldGlvbgogICAgIG1fc2VsZlJlZiA9IDA7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuaAppbmRleCA5YzFk
MjY3Li42YzMyNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuaApAQCAtNzIsOCAr
NzIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZpbGVUaHJlYWQoKTsKIAotICAgIHN0YXRp
YyB2b2lkKiBmaWxlVGhyZWFkU3RhcnQodm9pZCopOwotICAgIHZvaWQqIHJ1bkxvb3AoKTsKKyAg
ICBzdGF0aWMgdm9pZCBmaWxlVGhyZWFkU3RhcnQodm9pZCopOworICAgIHZvaWQgcnVuTG9vcCgp
OwogCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwogICAgIFJlZlB0cjxGaWxlVGhy
ZWFkPiBtX3NlbGZSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmNwcAppbmRleCBhODUwN2E5Li41YWU4MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6Y2xvc2UoKQogICAgICAgICB3YWtlU3luY1RocmVhZCgpOwogICAgICAgICAKICAgICAgICAg
Ly8gV2FpdCBmb3IgdGhlIHN5bmMgdGhyZWFkIHRvIHRlcm1pbmF0ZQotICAgICAgICB3YWl0Rm9y
VGhyZWFkQ29tcGxldGlvbihtX3N5bmNUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9yVGhyZWFk
Q29tcGxldGlvbihtX3N5bmNUaHJlYWQpOwogICAgIH0KIAogICAgIG1fc3luY1RocmVhZFJ1bm5p
bmcgPSBmYWxzZTsgICAgCkBAIC05NDksMTQgKzk0OSwxNCBAQCBib29sIEljb25EYXRhYmFzZTo6
c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gbV90aHJlYWRUZXJt
aW5hdGlvblJlcXVlc3RlZCB8fCBtX3JlbW92ZUljb25zUmVxdWVzdGVkOwogfQogCi12b2lkKiBJ
Y29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lkKiB2SWNvbkRhdGFi
YXNlKQordm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lk
KiB2SWNvbkRhdGFiYXNlKQogeyAgICAKICAgICBJY29uRGF0YWJhc2UqIGljb25EQiA9IHN0YXRp
Y19jYXN0PEljb25EYXRhYmFzZSo+KHZJY29uRGF0YWJhc2UpOwogICAgIAotICAgIHJldHVybiBp
Y29uREItPmljb25EYXRhYmFzZVN5bmNUaHJlYWQoKTsKKyAgICBpY29uREItPmljb25EYXRhYmFz
ZVN5bmNUaHJlYWQoKTsKIH0KIAotdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5j
VGhyZWFkKCkKK3ZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKIHsK
ICAgICAvLyBUaGUgY2FsbCB0byBjcmVhdGUgdGhpcyB0aHJlYWQgbWlnaHQgbm90IGNvbXBsZXRl
IGJlZm9yZSB0aGUgdGhyZWFkIGFjdHVhbGx5IHN0YXJ0cywgc28gd2UgbWlnaHQgZmFpbCB0aGlz
IEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCkgYmVjYXVzZSB0aGUgcG9pbnRlciAKICAgICAvLyB0
byBvdXIgdGhyZWFkIHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiBmaWxsZWQgaW4geWV0LgpAQCAtOTg4
LDEyICs5ODgsMTQgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFk
KCkKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICBpZiAo
IW1fc3luY0RCLm9wZW4obV9jb21wbGV0ZURhdGFiYXNlUGF0aCkpIHsKICAgICAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIG9wZW4gaWNvbiBkYXRhYmFzZSBhdCBwYXRoICVzIC0gJXMiLCBt
X2NvbXBsZXRlRGF0YWJhc2VQYXRoLmFzY2lpKCkuZGF0YSgpLCBtX3N5bmNEQi5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpCi0g
ICAgICAgIHJldHVybiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICBpZiAoc2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5KCkpIHsKKyAgICAgICAgc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBkb3VibGUg
dGltZVN0YW1wID0gY3VycmVudFRpbWUoKTsKQEAgLTEwMDEsOCArMTAwMywxMCBAQCB2b2lkKiBJ
Y29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmICAgIAogCiAgICAg
cGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbigpOwotICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0
aXZpdHkoKSkKLSAgICAgICAgcmV0dXJuIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgIGlmIChz
aG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkgeworICAgICAgICBzeW5jVGhyZWFkTWFpbkxvb3Ao
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAog
ICAgIGRvdWJsZSBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDI0LDggKzEwMjgsMTAg
QEAgdm9pZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAgICAgICAg
ICAgIGltcG9ydFRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkKLSAgICAgICAgICAgIHJldHVy
biBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAgICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rp
dml0eSgpKSB7CisgICAgICAgICAgICBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAogICAg
ICAgICBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CkBAIC0xMDQxLDggKzEwNDcsMTAgQEAgdm9p
ZCogSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAgICBMT0coSWNvbkRh
dGFiYXNlLCAiKFRIUkVBRCkgU3RhcnRpbmcgaWNvblVSTCBpbXBvcnQiKTsKICAgICBwZXJmb3Jt
VVJMSW1wb3J0KCk7CiAgICAgCi0gICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpKQot
ICAgICAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29wKCk7CisgICAgaWYgKHNob3VsZFN0b3BU
aHJlYWRBY3Rpdml0eSgpKSB7CisgICAgICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIG5ld1N0YW1wID0gY3Vy
cmVudFRpbWUoKTsKQEAgLTEwNTAsNyArMTA1OCw3IEBAIHZvaWQqIEljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlU3luY1RocmVhZCgpCiAjZW5kaWYgCiAKICAgICBMT0coSWNvbkRhdGFiYXNlLCAi
KFRIUkVBRCkgQmVnaW5uaW5nIHN5bmMiKTsKLSAgICByZXR1cm4gc3luY1RocmVhZE1haW5Mb29w
KCk7CisgICAgc3luY1RocmVhZE1haW5Mb29wKCk7CiB9CiAKIHN0YXRpYyBpbnQgZGF0YWJhc2VW
ZXJzaW9uTnVtYmVyKFNRTGl0ZURhdGFiYXNlJiBkYikKQEAgLTEzNDgsNyArMTM1Niw3IEBAIHZv
aWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0KCkKICAgICBjYWxsT25NYWluVGhyZWFk
KG5vdGlmeVBlbmRpbmdMb2FkRGVjaXNpb25zT25NYWluVGhyZWFkLCB0aGlzKTsKIH0KIAotdm9p
ZCogSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQordm9pZCBJY29uRGF0YWJhc2U6
OnN5bmNUaHJlYWRNYWluTG9vcCgpCiB7CiAgICAgQVNTRVJUX0lDT05fU1lOQ19USFJFQUQoKTsK
IApAQCAtMTQ2MSw4ICsxNDY5LDYgQEAgdm9pZCogSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFp
bkxvb3AoKQogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9zeW5jTG9jayk7CiAgICAgICAg
IG1fZGlzYWJsZWRTdWRkZW5UZXJtaW5hdGlvbkZvclN5bmNUaHJlYWQgPSBmYWxzZTsKICAgICB9
Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJh
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuaAppbmRleCA3YWIw
ODQxLi5mNGFiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
aApAQCAtMTgzLDE1ICsxODMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
dG9wVGhyZWFkQWN0aXZpdHkoKSBjb25zdDsKIAogcHJpdmF0ZTogICAgCi0gICAgc3RhdGljIHZv
aWQqIGljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lkICopOwotICAgIHZvaWQqIGljb25E
YXRhYmFzZVN5bmNUaHJlYWQoKTsKKyAgICBzdGF0aWMgdm9pZCBpY29uRGF0YWJhc2VTeW5jVGhy
ZWFkU3RhcnQodm9pZCAqKTsKKyAgICB2b2lkIGljb25EYXRhYmFzZVN5bmNUaHJlYWQoKTsKICAg
ICAKICAgICAvLyBUaGUgZm9sbG93aW5nIGJsb2NrIG9mIG1ldGhvZHMgYXJlIGNhbGxlZCBleGNs
dXNpdmVseSBieSB0aGUgc3luYyB0aHJlYWQgdG8gbWFuYWdlIGkvbyB0byBhbmQgZnJvbSB0aGUg
ZGF0YWJhc2UKICAgICAvLyBFYWNoIG1ldGhvZCBzaG91bGQgcGVyaW9kaWNhbGx5IG1vbml0b3Ig
bV90aHJlYWRUZXJtaW5hdGlvblJlcXVlc3RlZCB3aGVuIGl0IG1ha2VzIHNlbnNlIHRvIHJldHVy
biBlYXJseSBvbiBzaHV0ZG93bgogICAgIHZvaWQgcGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbigp
OwogICAgIGJvb2wgY2hlY2tJbnRlZ3JpdHkoKTsKICAgICB2b2lkIHBlcmZvcm1VUkxJbXBvcnQo
KTsKLSAgICB2b2lkKiBzeW5jVGhyZWFkTWFpbkxvb3AoKTsKKyAgICB2b2lkIHN5bmNUaHJlYWRN
YWluTG9vcCgpOwogICAgIGJvb2wgcmVhZEZyb21EYXRhYmFzZSgpOwogICAgIGJvb2wgd3JpdGVU
b0RhdGFiYXNlKCk7CiAgICAgdm9pZCBwcnVuZVVucmV0YWluZWRJY29ucygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKaW5kZXggZmM1
YTQwNS4uYTk1Y2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUaHJlYWQuY3BwCkBAIC03NywxMSArNzcsOSBAQCB2b2lkIFNjcm9sbGluZ1RocmVh
ZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgIH0KIH0KIAotdm9pZCogU2Nyb2xsaW5nVGhy
ZWFkOjp0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpCit2b2lkIFNjcm9sbGlu
Z1RocmVhZDo6dGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhyZWFkKQogewogICAgIHN0
YXRpY19jYXN0PFNjcm9sbGluZ1RocmVhZCo+KHNjcm9sbGluZ1RocmVhZCktPnRocmVhZEJvZHko
KTsKLQotICAgIHJldHVybiAwOwogfQogCiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQm9k
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5o
CmluZGV4IDIyNjcxZTQuLmQ4ZGZhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIFNjcm9sbGluZ1RocmVhZCYgc2hhcmVkKCk7CiAKICAgICB2b2lkIGNyZWF0ZVRocmVh
ZElmTmVlZGVkKCk7Ci0gICAgc3RhdGljIHZvaWQqIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9s
bGluZ1RocmVhZCk7CisgICAgc3RhdGljIHZvaWQgdGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xs
aW5nVGhyZWFkKTsKICAgICB2b2lkIHRocmVhZEJvZHkoKTsKICAgICB2b2lkIGRpc3BhdGNoRnVu
Y3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBjYjczNTVhLi44Zjk2
Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHAKQEAgLTgwLDEzICs4MCwxMSBAQCBIUlRGRGF0YWJhc2VMb2FkZXI6On5I
UlRGRGF0YWJhc2VMb2FkZXIoKQogCiAKIC8vIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGRhdGFi
YXNlIGluIHRoaXMgdGhyZWFkLgotc3RhdGljIHZvaWQqIGRhdGFiYXNlTG9hZGVyRW50cnkodm9p
ZCogdGhyZWFkRGF0YSkKK3N0YXRpYyB2b2lkIGRhdGFiYXNlTG9hZGVyRW50cnkodm9pZCogdGhy
ZWFkRGF0YSkKIHsKICAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SFJURkRhdGFiYXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7CiAgICAgQVNTRVJUKGxvYWRl
cik7CiAgICAgbG9hZGVyLT5sb2FkKCk7Ci0gICAgCi0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQg
SFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKQEAgLTEyMSw3ICsxMTksNyBAQCB2b2lkIEhSVEZE
YXRhYmFzZUxvYWRlcjo6d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKQogICAgIAogICAg
IC8vIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdHdpY2Ug
Zm9yIHRoZSBzYW1lIHRocmVhZC4KICAgICBpZiAobV9kYXRhYmFzZUxvYWRlclRocmVhZCkKLSAg
ICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV9kYXRhYmFzZUxvYWRlclRocmVhZCwgMCk7
CisgICAgICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQp
OwogICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCBjNjExNDE0Li5j
NmFiNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5jcHAKQEAgLTUzLDExICs1MywxMCBAQCBjb25zdCBzaXplX3QgUmVhbHRpbWVGcmFt
ZUxpbWl0ID0gODE5MiAgKyA0MDk2OyAvLyB+Mjc4bXNlYyBAIDQ0LjFLSHoKIGNvbnN0IHNpemVf
dCBNaW5GRlRTaXplID0gMjU2OwogY29uc3Qgc2l6ZV90IE1heFJlYWx0aW1lRkZUU2l6ZSA9IDIw
NDg7CiAKLXN0YXRpYyB2b2lkKiBiYWNrZ3JvdW5kVGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0
YSkKK3N0YXRpYyB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQog
ewogICAgIFJldmVyYkNvbnZvbHZlciogcmV2ZXJiQ29udm9sdmVyID0gc3RhdGljX2Nhc3Q8UmV2
ZXJiQ29udm9sdmVyKj4odGhyZWFkRGF0YSk7CiAgICAgcmV2ZXJiQ29udm9sdmVyLT5iYWNrZ3Jv
dW5kVGhyZWFkRW50cnkoKTsKLSAgICByZXR1cm4gMDsKIH0KIAogUmV2ZXJiQ29udm9sdmVyOjpS
ZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5k
ZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRTaXplLCBzaXplX3QgY29udm9sdmVyUmVuZGVyUGhh
c2UsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMpCkBAIC0xNDIsNyArMTQxLDcgQEAgUmV2ZXJi
Q29udm9sdmVyOjp+UmV2ZXJiQ29udm9sdmVyKCkKICAgICAgICAgICAgIG1fYmFja2dyb3VuZFRo
cmVhZENvbmRpdGlvbi5zaWduYWwoKTsKICAgICAgICAgfQogCi0gICAgICAgIHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKG1fYmFja2dyb3VuZFRocmVhZCwgMCk7CisgICAgICAgIHdhaXRGb3JUaHJl
YWRDb21wbGV0aW9uKG1fYmFja2dyb3VuZFRocmVhZCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAK
aW5kZXggYWE5OWRmMy4uMzA4OGViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNDIsNyArNDIsNyBAQCBz
dGF0aWMgdm9pZCBlbXB0eVBlcmZvcm0odm9pZCopCiB7CiB9CiAKLXN0YXRpYyB2b2lkKiBydW5M
b2FkZXJUaHJlYWQodm9pZCopCitzdGF0aWMgdm9pZCBydW5Mb2FkZXJUaHJlYWQodm9pZCopCiB7
CiAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKIApAQCAt
NTYsOCArNTYsNiBAQCBzdGF0aWMgdm9pZCogcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQogICAgICAg
ICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKICAgICAgICAgcmVzdWx0ID0gQ0ZSdW5Mb29wUnVuSW5N
b2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKSwgdHJ1ZSk7CiAgICAgfSB3aGlsZSAocmVzdWx0ICE9IGtDRlJ1bkxvb3BSdW5TdG9wcGVk
ICYmIHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuRmluaXNoZWQpOwotCi0gICAgcmV0dXJuIDA7CiB9
CiAKIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9E
YXRhYmFzZVRocmVhZC5jcHAKaW5kZXggY2JkZTMyNC4uZDc3MWIxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTg4LDEzICs4OCwxMyBAQCBib29sIERh
dGFiYXNlVGhyZWFkOjp0ZXJtaW5hdGlvblJlcXVlc3RlZChEYXRhYmFzZVRhc2tTeW5jaHJvbml6
ZXIqIHRhc2tTeW5jaHJvbgogICAgIHJldHVybiBtX3F1ZXVlLmtpbGxlZCgpOwogfQogCi12b2lk
KiBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCh2b2lkKiB2RGF0YWJhc2VUaHJl
YWQpCit2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZFN0YXJ0KHZvaWQqIHZEYXRh
YmFzZVRocmVhZCkKIHsKICAgICBEYXRhYmFzZVRocmVhZCogZGJUaHJlYWQgPSBzdGF0aWNfY2Fz
dDxEYXRhYmFzZVRocmVhZCo+KHZEYXRhYmFzZVRocmVhZCk7Ci0gICAgcmV0dXJuIGRiVGhyZWFk
LT5kYXRhYmFzZVRocmVhZCgpOworICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVhZCgpOwogfQog
Ci12b2lkKiBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQordm9pZCBEYXRhYmFzZVRo
cmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIHsKICAgICAgICAgLy8gV2FpdCBmb3IgRGF0
YWJhc2VUaHJlYWQ6OnN0YXJ0KCkgdG8gY29tcGxldGUuCkBAIC0xMzQsOCArMTM0LDYgQEAgdm9p
ZCogRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkKCkKIAogICAgIGlmIChjbGVhbnVwU3lu
YykgLy8gU29tZW9uZSB3YW50ZWQgdG8ga25vdyB3aGVuIHdlIHdlcmUgZG9uZSBjbGVhbmluZyB1
cC4KICAgICAgICAgY2xlYW51cFN5bmMtPnRhc2tDb21wbGV0ZWQoKTsKLQotICAgIHJldHVybiAw
OwogfQogCiB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2Uq
IGRhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGQ0
MTBlZGIuLmZhNGZkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlVGhyZWFkLmgK
QEAgLTcyLDggKzcyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEYXRhYmFzZVRocmVhZCgp
OwogCi0gICAgc3RhdGljIHZvaWQqIGRhdGFiYXNlVGhyZWFkU3RhcnQodm9pZCopOwotICAgIHZv
aWQqIGRhdGFiYXNlVGhyZWFkKCk7CisgICAgc3RhdGljIHZvaWQgZGF0YWJhc2VUaHJlYWRTdGFy
dCh2b2lkKik7CisgICAgdm9pZCBkYXRhYmFzZVRocmVhZCgpOwogCiAgICAgTXV0ZXggbV90aHJl
YWRDcmVhdGlvbk11dGV4OwogICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFkLmNwcAppbmRleCBiYTFiMGZh
Li5hOGU0NGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFn
ZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJl
YWQuY3BwCkBAIC01NiwxOCArNTYsMTYgQEAgYm9vbCBMb2NhbFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0
KCkKICAgICByZXR1cm4gbV90aHJlYWRJRDsKIH0KIAotdm9pZCogTG9jYWxTdG9yYWdlVGhyZWFk
Ojp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCogdGhyZWFkKQordm9pZCBMb2NhbFN0b3Jh
Z2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKiB0aHJlYWQpCiB7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PExvY2FsU3RvcmFnZVRocmVhZCo+KHRocmVhZCktPnRocmVhZEVu
dHJ5UG9pbnQoKTsKKyAgICBzdGF0aWNfY2FzdDxMb2NhbFN0b3JhZ2VUaHJlYWQqPih0aHJlYWQp
LT50aHJlYWRFbnRyeVBvaW50KCk7CiB9CiAKLXZvaWQqIExvY2FsU3RvcmFnZVRocmVhZDo6dGhy
ZWFkRW50cnlQb2ludCgpCit2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2lu
dCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgd2hpbGUgKE93blB0cjxM
b2NhbFN0b3JhZ2VUYXNrPiB0YXNrID0gbV9xdWV1ZS53YWl0Rm9yTWVzc2FnZSgpKQogICAgICAg
ICB0YXNrLT5wZXJmb3JtVGFzaygpOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgTG9jYWxT
dG9yYWdlVGhyZWFkOjpzY2hlZHVsZVRhc2soUGFzc093blB0cjxMb2NhbFN0b3JhZ2VUYXNrPiB0
YXNrKQpAQCAtODUsOSArODMsOCBAQCB2b2lkIExvY2FsU3RvcmFnZVRocmVhZDo6dGVybWluYXRl
KCkKICAgICBpZiAoIW1fdGhyZWFkSUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZvaWQqIHJl
dHVyblZhbHVlOwogICAgIG1fcXVldWUuYXBwZW5kKExvY2FsU3RvcmFnZVRhc2s6OmNyZWF0ZVRl
cm1pbmF0ZSh0aGlzKSk7Ci0gICAgd2FpdEZvclRocmVhZENvbXBsZXRpb24obV90aHJlYWRJRCwg
JnJldHVyblZhbHVlKTsKKyAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElEKTsK
ICAgICBBU1NFUlQobV9xdWV1ZS5raWxsZWQoKSk7CiAgICAgbV90aHJlYWRJRCA9IDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFnZVRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VUaHJlYWQuaAppbmRleCA0NjQ2N2Fm
Li40MzRmMzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0xvY2FsU3RvcmFn
ZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvTG9jYWxTdG9yYWdlVGhyZWFk
LmgKQEAgLTU1LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBMb2NhbFN0
b3JhZ2VUaHJlYWQoKTsKIAogICAgICAgICAvLyBDYWxsZWQgb24gYmFja2dyb3VuZCB0aHJlYWQu
Ci0gICAgICAgIHN0YXRpYyB2b2lkKiB0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCopOwot
ICAgICAgICB2b2lkKiB0aHJlYWRFbnRyeVBvaW50KCk7CisgICAgICAgIHN0YXRpYyB2b2lkIHRo
cmVhZEVudHJ5UG9pbnRDYWxsYmFjayh2b2lkKik7CisgICAgICAgIHZvaWQgdGhyZWFkRW50cnlQ
b2ludCgpOwogCiAgICAgICAgIFRocmVhZElkZW50aWZpZXIgbV90aHJlYWRJRDsKICAgICAgICAg
TWVzc2FnZVF1ZXVlPExvY2FsU3RvcmFnZVRhc2s+IG1fcXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggYzI2ODI0My4uZjAwYmQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAt
NDksOCArNDksNyBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKICAg
ICBtX3F1ZXVlLmtpbGwoKTsKICAgICAKICAgICAvLyBTdG9wIHRocmVhZC4KLSAgICB2b2lkKiBl
eGl0Q29kZTsKLSAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihtX3RocmVhZElELCAmZXhpdENv
ZGUpOworICAgIHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKG1fdGhyZWFkSUQpOwogICAgIG1fdGhy
ZWFkSUQgPSAwOwogfQogCkBAIC02NiwxMiArNjUsMTEgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rl
cjo6ZGVjb2RlQXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwg
UGEKIH0KIAogLy8gQXN5bmNocm9ub3VzbHkgZGVjb2RlIGluIHRoaXMgdGhyZWFkLgotdm9pZCog
QXN5bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCit2b2lkIEFz
eW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQogewogICAgIEFT
U0VSVCh0aHJlYWREYXRhKTsKICAgICBBc3luY0F1ZGlvRGVjb2RlciogZGVjb2RlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8QXN5bmNBdWRpb0RlY29kZXIqPih0aHJlYWREYXRhKTsKICAgICBkZWNvZGVy
LT5ydW5Mb29wKCk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OnJ1bkxvb3AoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgK
aW5kZXggZTJmYzRkYy4uY2VkODA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9Bc3lu
Y0F1ZGlvRGVjb2Rlci5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0
cjxBdWRpb0J1ZmZlcj4gbV9hdWRpb0J1ZmZlcjsKICAgICB9OwogICAgIAotICAgIHN0YXRpYyB2
b2lkKiB0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKKyAgICBzdGF0aWMgdm9pZCB0aHJl
YWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKTsKICAgICB2b2lkIHJ1bkxvb3AoKTsKIAogICAgIFdU
Rjo6VGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMTk4YTUw
Mi4uYWViZDVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9yZW5kZXJUaHJlYWQpIHsKLSAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRp
b24obV9yZW5kZXJUaHJlYWQsIDApOworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbiht
X3JlbmRlclRocmVhZCk7CiAgICAgICAgIG1fcmVuZGVyVGhyZWFkID0gMDsKICAgICB9CiAKQEAg
LTkyLDEzICs5MiwxMSBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRS
ZW5kZXJpbmcoKQogfQogCiAvLyBEbyBvZmZsaW5lIHJlbmRlcmluZyBpbiB0aGlzIHRocmVhZC4K
LXZvaWQqIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyRW50cnkodm9pZCogdGhy
ZWFkRGF0YSkKK3ZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXJFbnRyeSh2
b2lkKiB0aHJlYWREYXRhKQogewogICAgIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVz
dGluYXRpb25Ob2RlID0gcmVpbnRlcnByZXRfY2FzdDxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGUqPih0aHJlYWREYXRhKTsKICAgICBBU1NFUlQoZGVzdGluYXRpb25Ob2RlKTsKICAgICBkZXN0
aW5hdGlvbk5vZGUtPnJlbmRlcigpOwotICAgIAotICAgIHJldHVybiAwOwogfQogCiB2b2lkIE9m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggYzRkNTY3
YS4uN2JjYjkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGluZUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBSZW5kZXJpbmcgdGhyZWFkLgogICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9yZW5k
ZXJUaHJlYWQ7CiAgICAgYm9vbCBtX3N0YXJ0ZWRSZW5kZXJpbmc7Ci0gICAgc3RhdGljIHZvaWQq
IHJlbmRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpOworICAgIHN0YXRpYyB2b2lkIHJlbmRlckVu
dHJ5KHZvaWQqIHRocmVhZERhdGEpOwogICAgIHZvaWQgcmVuZGVyKCk7CiAgICAgCiAgICAgLy8g
Rm9yIGNvbXBsZXRpb24gY2FsbGJhY2sgb24gbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggOTNiYTBiZi4uMzRjZjkwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtMTIzLDEyICsxMjMsMTIgQEAgYm9vbCBX
b3JrZXJUaHJlYWQ6OnN0YXJ0KCkKICAgICByZXR1cm4gbV90aHJlYWRJRDsKIH0KIAotdm9pZCog
V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCh2b2lkKiB0aHJlYWQpCit2b2lkIFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQogewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJlYWQoKTsKKyAgICBz
dGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJlYWQoKTsKIH0KIAot
dm9pZCogV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWQoKQordm9pZCBXb3JrZXJUaHJlYWQ6Ondv
cmtlclRocmVhZCgpCiB7CiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fdGhyZWFk
Q3JlYXRpb25NdXRleCk7CkBAIC0xNzMsOCArMTczLDYgQEAgdm9pZCogV29ya2VyVGhyZWFkOjp3
b3JrZXJUaHJlYWQoKQogCiAgICAgLy8gVGhlIHRocmVhZCBvYmplY3QgbWF5IGJlIGFscmVhZHkg
ZGVzdHJveWVkIGZyb20gbm90aWZpY2F0aW9uIG5vdywgZG9uJ3QgdHJ5IHRvIGFjY2VzcyAidGhp
cyIuCiAgICAgZGV0YWNoVGhyZWFkKHRocmVhZElEKTsKLQotICAgIHJldHVybiAwOwogfQogCiB2
b2lkIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5oCmluZGV4IDY2NDZiMTEuLmUzYTExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJUaHJlYWQuaApAQCAtODAsOCArODAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICAvLyBTdGF0aWMgZnVuY3Rpb24gZXhlY3V0ZWQgYXMgdGhlIGNv
cmUgcm91dGluZSBvbiB0aGUgbmV3IHRocmVhZC4gUGFzc2VkIGEgcG9pbnRlciB0byBhIFdvcmtl
clRocmVhZCBvYmplY3QuCi0gICAgICAgIHN0YXRpYyB2b2lkKiB3b3JrZXJUaHJlYWRTdGFydCh2
b2lkKik7Ci0gICAgICAgIHZvaWQqIHdvcmtlclRocmVhZCgpOworICAgICAgICBzdGF0aWMgdm9p
ZCB3b3JrZXJUaHJlYWRTdGFydCh2b2lkKik7CisgICAgICAgIHZvaWQgd29ya2VyVGhyZWFkKCk7
CiAKICAgICAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwogICAgICAgICBXb3JrZXJS
dW5Mb29wIG1fcnVuTG9vcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNjllOThiLi4xMzE1ODdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDItMTQgIEthbGV2IExlbWJl
ciAgPGthbGV2bGVtYmVyQGdtYWlsLmNvbT4KKworICAgICAgICBSZW1vdmUgdW51c2VkIHBhcmFt
ZXRlcnMgZnJvbSBXVEYgdGhyZWFkaW5nIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbigpIGhhZCBhbiBvdXQg
cGFyYW0gJ3ZvaWQgKipyZXN1bHQnIHRvIGdldCB0aGUKKyAgICAgICAgJ3ZvaWQgKicgcmV0dXJu
ZWQgYnkgVGhyZWFkRnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbgorICAg
ICAgICBUaHJlYWRpbmdXaW4uY3BwIGlnbm9yZWQgdGhlIG91dCBwYXJhbSwgbm90IGZpbGxpbmcg
aXQgaW4uIFRoaXMgaGFkCisgICAgICAgIGxlZCB0byBhIHNpdHVhdGlvbiB3aGVyZSBub25lIG9m
IHRoZSBjbGllbnQgY29kZSBtYWRlIHVzZSBvZiB0aGUgcGFyYW0KKyAgICAgICAgYW5kIGp1c3Qg
aWdub3JlZCBpdC4KKworICAgICAgICBUbyBjbGVhbiB0aGlzIHVwLCB0aGUgcGF0Y2ggY2hhbmdl
cyB0aGUgc2lnbmF0dXJlIG9mIFRocmVhZEZ1bmN0aW9uIHRvCisgICAgICAgIHJldHVybiB2b2lk
IGluc3RlYWQgb2Ygdm9pZCogYW5kIGRyb3BzIHRoZSB0aGUgdW51c2VkICd2b2lkICoqcmVzdWx0
JworICAgICAgICBwYXJhbWV0ZXIgZnJvbSB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbi4gQWxzbywg
YWxsIGNsaWVudCBjb2RlIGlzCisgICAgICAgIHVwZGF0ZWQgZm9yIHRoZSBBUEkgY2hhbmdlLgor
CisgICAgICAgIEFzIG1lbnRpb25lZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzgzODkgLCBldmVuCisgICAgICAgIHRob3VnaCB0aGUgY2hhbmdlIG9ubHkgYWZm
ZWN0cyBpbnRlcm5hbCBBUEksIFNhZmFyaSBpcyB1c2luZyBpdAorICAgICAgICBkaXJlY3RseSBh
bmQgd2UnbGwgbmVlZCB0byBrZWVwIHRoZSBvbGQgdmVyc2lvbnMgYXJvdW5kIGZvciBBQkkKKyAg
ICAgICAgY29tcGF0aWJpbGl0eS4gRm9yIHRoaXMsIHRoZSBwYXRjaCBhZGRzIGNvbXBhdGliaWxp
dHkgd3JhcHBlcnMgd2l0aAorICAgICAgICB0aGUgb2xkIEFCSS4KKworICAgICAgICAqIFdlYktp
dC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRlZjogQWRkIHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAg
ICAqIFdlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZjogRGl0dG8uCisKIDIwMTIt
MDItMTUgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE5vdGlmeSBDaHJvbWVDbGllbnQgd2hlbiB0b3VjaC1ldmVudCBoYW5kbGVycyBhcmUg
aW5zdGFsbGVkL3JlbW92ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdF9DYWlyby5kZWYgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9q
L1dlYktpdF9DYWlyby5kZWYKaW5kZXggODliMGEyYS4uZTRjZDI2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm8uZGVmCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRlZgpAQCAtMTIyLDYgKzEy
Miw3IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVYWFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAg
ICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9j
cmVhdGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFowUEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJl
YWRAV1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAg
ID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCkBAIC0xMzksNSArMTQwLDYgQEAgRVhQ
T1JUUwogICAgICAgICA/dW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RG
QEBZQVhYWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERv
Y3VtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RG
QEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RG
QEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFY
QFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5k
ZWYgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyb19kZWJ1Zy5k
ZWYKaW5kZXggMWIxYjcyZC4uZTRhYzExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm9fZGVidWcuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZgpAQCAtMTIyLDYgKzEyMiw3
IEBAIEVYUE9SVFMKICAgICAgICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVY
WFoKICAgICAgICAgP2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAg
ICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVh
dGVUaHJlYWRAV1RGQEBZQUlQNkFYUEFYQFowUEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRA
V1RGQEBZQUlYWgogICAgICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9p
bml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCkBAIC0xMzksNSArMTQwLDYgQEAgRVhQT1JU
UwogICAgICAgICA/dW5sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZ
QVhYWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3Vt
ZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/d2FpdEBUaHJlYWRDb25kaXRpb25AV1RGQEBR
QUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZ
QUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFISVBBUEFYQFoK
ICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggMWI5ZGRiMi4uOTllOTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTAy
LTE0ICBLYWxldiBMZW1iZXIgIDxrYWxldmxlbWJlckBnbWFpbC5jb20+CisKKyAgICAgICAgUmVt
b3ZlIHVudXNlZCBwYXJhbWV0ZXJzIGZyb20gV1RGIHRocmVhZGluZyBBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2FpdEZvclRocmVhZENvbXBsZXRp
b24oKSBoYWQgYW4gb3V0IHBhcmFtICd2b2lkICoqcmVzdWx0JyB0byBnZXQgdGhlCisgICAgICAg
ICd2b2lkIConIHJldHVybmVkIGJ5IFRocmVhZEZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgaW1wbGVt
ZW50YXRpb24gaW4KKyAgICAgICAgVGhyZWFkaW5nV2luLmNwcCBpZ25vcmVkIHRoZSBvdXQgcGFy
YW0sIG5vdCBmaWxsaW5nIGl0IGluLiBUaGlzIGhhZAorICAgICAgICBsZWQgdG8gYSBzaXR1YXRp
b24gd2hlcmUgbm9uZSBvZiB0aGUgY2xpZW50IGNvZGUgbWFkZSB1c2Ugb2YgdGhlIHBhcmFtCisg
ICAgICAgIGFuZCBqdXN0IGlnbm9yZWQgaXQuCisKKyAgICAgICAgVG8gY2xlYW4gdGhpcyB1cCwg
dGhlIHBhdGNoIGNoYW5nZXMgdGhlIHNpZ25hdHVyZSBvZiBUaHJlYWRGdW5jdGlvbiB0bworICAg
ICAgICByZXR1cm4gdm9pZCBpbnN0ZWFkIG9mIHZvaWQqIGFuZCBkcm9wcyB0aGUgdGhlIHVudXNl
ZCAndm9pZCAqKnJlc3VsdCcKKyAgICAgICAgcGFyYW1ldGVyIGZyb20gd2FpdEZvclRocmVhZENv
bXBsZXRpb24uIEFsc28sIGFsbCBjbGllbnQgY29kZSBpcworICAgICAgICB1cGRhdGVkIGZvciB0
aGUgQVBJIGNoYW5nZS4KKworICAgICAgICBBcyBtZW50aW9uZWQgaW4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Mzg5ICwgZXZlbgorICAgICAgICB0aG91Z2ggdGhl
IGNoYW5nZSBvbmx5IGFmZmVjdHMgaW50ZXJuYWwgQVBJLCBTYWZhcmkgaXMgdXNpbmcgaXQKKyAg
ICAgICAgZGlyZWN0bHkgYW5kIHdlJ2xsIG5lZWQgdG8ga2VlcCB0aGUgb2xkIHZlcnNpb25zIGFy
b3VuZCBmb3IgQUJJCisgICAgICAgIGNvbXBhdGliaWxpdHkuIEZvciB0aGlzLCB0aGUgcGF0Y2gg
YWRkcyBjb21wYXRpYmlsaXR5IHdyYXBwZXJzIHdpdGgKKyAgICAgICAgdGhlIG9sZCBBQkkuCisK
KyAgICAgICAgKiBQbGF0Zm9ybS9Xb3JrUXVldWUuaDoKKyAgICAgICAgKFdvcmtRdWV1ZSk6Cisg
ICAgICAgICogUGxhdGZvcm0vZ3RrL1dvcmtRdWV1ZUd0ay5jcHA6CisgICAgICAgIChXb3JrUXVl
dWU6OnN0YXJ0V29ya1F1ZXVlVGhyZWFkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1RocmVhZExhdW5jaGVyTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJUaHJlYWRCb2R5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OndlYlRocmVhZEJvZHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXVuY2hlci93aW4vVGhyZWFkTGF1bmNoZXJXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJU
aHJlYWRCb2R5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpyYW5kb21DcmFzaFRocmVhZCk6CisgICAgICAgICogd2luL1dlYktpdDIuZGVm
OgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wMi0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRk
IFdlYktpdFByaW50T3BlcmF0aW9uIHRvIFdlYktpdDIgR1RLKyBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmgKaW5kZXggNTg3ZWY4OS4uN2I0YWZmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vV29ya1F1ZXVlLmgKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIFFUaHJlYWQq
IG1fd29ya1RocmVhZDsKICAgICBmcmllbmQgY2xhc3MgV29ya0l0ZW1RdDsKICNlbGlmIFBMQVRG
T1JNKEdUSykKLSAgICBzdGF0aWMgdm9pZCogc3RhcnRXb3JrUXVldWVUaHJlYWQoV29ya1F1ZXVl
Kik7CisgICAgc3RhdGljIHZvaWQgc3RhcnRXb3JrUXVldWVUaHJlYWQoV29ya1F1ZXVlKik7CiAg
ICAgdm9pZCB3b3JrUXVldWVUaHJlYWRCb2R5KCk7CiAgICAgdm9pZCBkaXNwYXRjaE9uU291cmNl
KEdTb3VyY2UqLCBjb25zdCBGdW5jdGlvbjx2b2lkKCk+JiwgR1NvdXJjZUZ1bmMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9ndGsvV29ya1F1ZXVlR3RrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsuY3BwCmluZGV4IDExMmJhMjgu
LmYwYzExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVl
dWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL2d0ay9Xb3JrUXVldWVHdGsu
Y3BwCkBAIC0xNDIsMTAgKzE0Miw5IEBAIHZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRh
dGUoKQogICAgIH0KIH0KIAotdm9pZCogV29ya1F1ZXVlOjpzdGFydFdvcmtRdWV1ZVRocmVhZChX
b3JrUXVldWUqIHdvcmtRdWV1ZSkKK3ZvaWQgV29ya1F1ZXVlOjpzdGFydFdvcmtRdWV1ZVRocmVh
ZChXb3JrUXVldWUqIHdvcmtRdWV1ZSkKIHsKICAgICB3b3JrUXVldWUtPndvcmtRdWV1ZVRocmVh
ZEJvZHkoKTsKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBXb3JrUXVldWU6OndvcmtRdWV1ZVRo
cmVhZEJvZHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L21hYy9UaHJlYWRMYXVuY2hlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9tYWMvVGhyZWFkTGF1bmNoZXJNYWMubW0KaW5kZXggZGQ1M2IzZS4uN2MwMTE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9UaHJlYWRMYXVu
Y2hlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Ro
cmVhZExhdW5jaGVyTWFjLm1tCkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIHZvaWQqIHdlYlRocmVhZEJvZHko
dm9pZCogY29udGV4dCkKK3N0YXRpYyB2b2lkIHdlYlRocmVhZEJvZHkodm9pZCogY29udGV4dCkK
IHsKICAgICBtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0ID0gc3RhdGljX2Nhc3Q8bWFjaF9wb3J0X3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CiAKQEAgLTUyLDggKzUyLDYg
QEAgc3RhdGljIHZvaWQqIHdlYlRocmVhZEJvZHkodm9pZCogY29udGV4dCkKICAgICBbcG9vbCBk
cmFpbl07CiAKICAgICBSdW5Mb29wOjpjdXJyZW50KCktPnJ1bigpOwotCi0gICAgcmV0dXJuIDA7
CiB9CiAKIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgVGhyZWFkTGF1bmNoZXI6OmNy
ZWF0ZVdlYlRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvcXQvVGhyZWFkTGF1bmNoZXJRdC5jcHAKaW5kZXggMWQwY2FmMy4uMzdkMDQ1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3F0L1RocmVhZExh
dW5jaGVyUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9xdC9U
aHJlYWRMYXVuY2hlclF0LmNwcApAQCAtNDcsNyArNDcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyB2b2lkKiB3ZWJUaHJlYWRCb2R5
KHZvaWQqIC8qIGNvbnRleHQgKi8pCitzdGF0aWMgdm9pZCB3ZWJUaHJlYWRCb2R5KHZvaWQqIC8q
IGNvbnRleHQgKi8pCiB7CiAgICAgLy8gSW5pdGlhbGl6YXRpb24KICAgICBKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcoKTsKQEAgLTU3LDggKzU3LDYgQEAgc3RhdGljIHZvaWQqIHdlYlRocmVhZEJv
ZHkodm9pZCogLyogY29udGV4dCAqLykKIAogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmluaXRp
YWxpemUoLTEsIFJ1bkxvb3A6OmN1cnJlbnQoKSk7CiAgICAgUnVuTG9vcDo6cnVuKCk7Ci0KLSAg
ICByZXR1cm4gMDsKIH0KIAogQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBUaHJlYWRM
YXVuY2hlcjo6Y3JlYXRlV2ViVGhyZWFkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci93aW4vVGhyZWFkTGF1bmNoZXJXaW4uY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9UaHJlYWRMYXVuY2hlcldpbi5jcHAKaW5kZXggZjlk
MWMwNC4uNWFiZWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL3dpbi9UaHJlYWRMYXVuY2hlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL3dpbi9UaHJlYWRMYXVuY2hlcldpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMg
dm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0KQorc3RhdGljIHZvaWQgd2ViVGhyZWFk
Qm9keSh2b2lkKiBjb250ZXh0KQogewogICAgIEhBTkRMRSBjbGllbnRJZGVudGlmaWVyID0gcmVp
bnRlcnByZXRfY2FzdDxIQU5ETEU+KGNvbnRleHQpOwogCkBAIC00Niw4ICs0Niw2IEBAIHN0YXRp
YyB2b2lkKiB3ZWJUaHJlYWRCb2R5KHZvaWQqIGNvbnRleHQpCiAKICAgICBXZWJQcm9jZXNzOjpz
aGFyZWQoKS5pbml0aWFsaXplKGNsaWVudElkZW50aWZpZXIsIFJ1bkxvb3A6OmN1cnJlbnQoKSk7
CiAgICAgUnVuTG9vcDo6cnVuKCk7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogQ29yZUlQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBUaHJlYWRMYXVuY2hlcjo6Y3JlYXRlV2ViVGhyZWFkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGQwOTgxMDcuLjJjZjJh
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTAwLDcg
KzEwMCw3IEBAIHN0YXRpYyB2b2lkIHNsZWVwKHVuc2lnbmVkIHNlY29uZHMpCiB9CiAjZW5kaWYK
IAotc3RhdGljIHZvaWQqIHJhbmRvbUNyYXNoVGhyZWFkKHZvaWQqKQorc3RhdGljIHZvaWQgcmFu
ZG9tQ3Jhc2hUaHJlYWQodm9pZCopCiB7CiAgICAgLy8gVGhpcyBkZWxheSB3YXMgY2hvc2VuIHNl
bWktYXJiaXRyYXJpbHkuIFdlIHdhbnQgdGhlIGNyYXNoIHRvIGhhcHBlbiBzb21ld2hhdCBxdWlj
a2x5IHRvCiAgICAgLy8gZW5hYmxlIHVzZWZ1bCBzdHJlc3MgdGVzdGluZywgYnV0IG5vdCBzbyBx
dWlja2x5IHRoYXQgdGhlIHdlYiBwcm9jZXNzIHdpbGwgYWx3YXlzIGNyYXNoIHNvb24KQEAgLTEw
OSw3ICsxMDksNiBAQCBzdGF0aWMgdm9pZCogcmFuZG9tQ3Jhc2hUaHJlYWQodm9pZCopCiAKICAg
ICBzbGVlcChyYW5kb21OdW1iZXIoKSAqIG1heGltdW1SYW5kb21DcmFzaERlbGF5KTsKICAgICBD
UkFTSCgpOwotICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBzdGFydFJhbmRvbUNyYXNo
VGhyZWFkSWZSZXF1ZXN0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhhNjAyM2EuLjJh
YTcwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTExNiw2ICsxMTYsNyBAQCBFWFBPUlRT
CiAgICAgICAgID9icm9hZGNhc3RAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWFhaCiAgICAgICAg
ID9jYWxsT25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgICAgID9jcmVhdGVU
aHJlYWRAV1RGQEBZQUlQNkFQQVhQQVhAWjBQQkRAWgorICAgICAgICA/Y3JlYXRlVGhyZWFkQFdU
RkBAWUFJUDZBWFBBWEBaMFBCREBaCiAgICAgICAgID9jdXJyZW50VGhyZWFkQFdURkBAWUFJWFoK
ICAgICAgICAgP2RldGFjaFRocmVhZEBXVEZAQFlBWElAWgogICAgICAgICA/aW5pdGlhbGl6ZU1h
aW5UaHJlYWRAV1RGQEBZQVhYWgpAQCAtMTMxLDYgKzEzMiw3IEBAIEVYUE9SVFMKICAgICAgICAg
P3VubG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgICAgICA/dW5sb2NrQXRvbWljYWxseUluaXRp
YWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/d2FpdEBUaHJlYWRDb25kaXRp
b25AV1RGQEBRQUVYQUFWTXV0ZXhAMkBAWgorICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRp
b25AV1RGQEBZQUhJQFoKICAgICAgICAgP3dhaXRGb3JUaHJlYWRDb21wbGV0aW9uQFdURkBAWUFI
SVBBUEFYQFoKICAgICAgICAgP2NyZWF0ZVRocmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMEBaCiAg
ICAgICAgIDsgUmUtZXhwb3J0cyBmcm9tIFdlYkNvcmUgZm9yIHRlc3QgaGFybmVzc2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMTQ5YjNhZi4uY2I3YjdjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTEwLDYgKzExMCw3IEBAIEVYUE9SVFMK
ICAgICAgICAgP2Jyb2FkY2FzdEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKICAgICAgICAg
P2NhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICAgICAgP2NyZWF0ZVRo
cmVhZEBXVEZAQFlBSVA2QVBBWFBBWEBaMFBCREBaCisgICAgICAgID9jcmVhdGVUaHJlYWRAV1RG
QEBZQUlQNkFYUEFYQFowUEJEQFoKICAgICAgICAgP2N1cnJlbnRUaHJlYWRAV1RGQEBZQUlYWgog
ICAgICAgICA/ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFp
blRocmVhZEBXVEZAQFlBWFhaCkBAIC0xMjUsNiArMTI2LDcgQEAgRVhQT1JUUwogICAgICAgICA/
dW5sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgICAgID91bmxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgICAgID93YWl0QFRocmVhZENvbmRpdGlv
bkBXVEZAQFFBRVhBQVZNdXRleEAyQEBaCisgICAgICAgID93YWl0Rm9yVGhyZWFkQ29tcGxldGlv
bkBXVEZAQFlBSElAWgogICAgICAgICA/d2FpdEZvclRocmVhZENvbXBsZXRpb25AV1RGQEBZQUhJ
UEFQQVhAWgogICAgICAgICA/Y3JlYXRlVGhyZWFkQFdURkBAWUFJUDZBUEFYUEFYQFowQFoKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>