<?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>196168</bug_id>
          
          <creation_ts>2019-03-22 16:56:18 -0700</creation_ts>
          <short_desc>Web Automation: clean up some WebAutomationSession methods to use modern async IPC</short_desc>
          <delta_ts>2019-04-08 12:31:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebDriver</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1520534</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-03-22 16:56:18 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520537</commentid>
    <comment_count>1</comment_count>
      <attachid>365780</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-03-22 17:01:17 -0700</bug_when>
    <thetext>Created attachment 365780
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520539</commentid>
    <comment_count>2</comment_count>
      <attachid>365780</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-03-22 17:03:35 -0700</bug_when>
    <thetext>Comment on attachment 365780
WIP

This is as far as I got today. I was unable to convert the screenshot method because it transfers a SharedBitmap::Handle / SharedMemory::Handle, which does not have a modern decoder.

It seems problematic to have a signature of Optional&lt;SharedMemory::Handle&gt; decode(IPC::Decoder&amp;) because SharedMemory::Handle is noncopyable. I haven&apos;t found anyway to accomplish that, and since Optional is typically copyable, I&apos;m not sure that it makes sense to put a noncopyable thing into a copyable Optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520977</commentid>
    <comment_count>3</comment_count>
      <attachid>365891</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-03-25 13:28:38 -0700</bug_when>
    <thetext>Created attachment 365891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524257</commentid>
    <comment_count>4</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-04-04 09:07:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/48752230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524371</commentid>
    <comment_count>5</comment_count>
      <attachid>365891</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-04-04 13:00:01 -0700</bug_when>
    <thetext>Comment on attachment 365891
Patch

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

r=me, most of my comments are applicable in more than just that spot, so if they are addressed please try to address them everywhere :)

&gt; Source/WebKit/ChangeLog:9
&gt; +        So, most messages between WebAutomationSession and its proxy can use this facility, and stop

NIT: unnecessary comma =&gt; &quot;facility and stop&quot;.

&gt; Source/WebKit/ChangeLog:16
&gt; +        be able to cancel all pending replies when a page navigates away, the web process crashes,
&gt; +        or when handling an alert.

NIT: I normally indent subsequent lines to make it clear where each bullet point begins/ends.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:973
&gt; +    WTF::CompletionHandler&lt;void(Optional&lt;String&gt;, uint64_t)&gt; completionHandler = [this, protectedThis = makeRef(*this), callback = callback.copyRef()](Optional&lt;String&gt; errorType, uint64_t frameID) mutable {

Given that the `callback` is a `&amp;&amp;`, should we move it into the lambda (e.g. `callback = WTFMove(callback)`)?

Also, can you use `auto completionHandler` or is it necessary that you specify the type?

Style: there should be a space between the &quot;](&quot;.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:975
&gt; +            callback-&gt;sendFailure(STRING_FOR_PREDEFINED_ERROR_MESSAGE(*errorType));

Style: I prefer using `errorType.value()` for `Optional`s.

&gt; Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:1010
&gt; +    WTF::CompletionHandler&lt;void(Optional&lt;String&gt;, uint64_t)&gt; completionHandler = [this, protectedThis = makeRef(*this), callback = callback.copyRef()](Optional&lt;String&gt; errorType, uint64_t frameID) mutable {

Could you inline this, since it&apos;s only used once (and that usage is a `WTFMove`)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525267</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-04-08 11:15:15 -0700</bug_when>
    <thetext>I&apos;m investigating a few crashes that this change has caused, along the lines of:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BREAKPOINT (SIGTRAP)
Exception Codes:       0x0000000000000002, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Trace/BPT trap: 5
Termination Reason:    Namespace SIGNAL, Code 0x5
Terminating Process:   exc handler [9528]

Application Specific Information:
Received invalid message: &apos;WebAutomationSessionProxy::ComputeElementLayout&apos;
Bundle controller class:
BrowserBundleController

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebKit              	0x00000006c014041b WebKit::AuxiliaryProcess::didReceiveInvalidMessage(IPC::Connection&amp;, IPC::StringReference, IPC::StringReference) + 151 (AuxiliaryProcessCocoa.mm:38)
1   com.apple.WebKit              	0x00000006c0014b14 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 200 (Connection.cpp:1026)
2   com.apple.WebKit              	0x00000006c00182ab IPC::Connection::dispatchOneIncomingMessage() + 181
3   com.apple.JavaScriptCore      	0x00000006c6115aa4 WTF::RunLoop::performWork() + 228
4   com.apple.JavaScriptCore      	0x00000006c6115d32 WTF::RunLoop::performWork(void*) + 34 (RunLoopCF.cpp:39)
5   com.apple.CoreFoundation      	0x00007fff42c2e0c3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525289</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-04-08 12:11:00 -0700</bug_when>
    <thetext>I can&apos;t reproduce this on a clean build, so I think something was out of sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525294</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2019-04-08 12:31:52 -0700</bug_when>
    <thetext>Committed r244033: &lt;https://trac.webkit.org/changeset/244033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365780</attachid>
            <date>2019-03-22 17:01:17 -0700</date>
            <delta_ts>2019-03-25 13:28:37 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-196168-20190322170116.patch</filename>
            <type>text/plain</type>
            <size>11907</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE1YTRlZTM5ODliMDRhYzJm
ZDY3YjhkNGQ4YWFiMGU5ZTA3M2U4YzEuLjU2NmRjZTFhYjJkM2Y4ODRmZmZlYjlmNWFjYzZjYWI0
ZjFmZGJlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTktMDMtMjIgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGNsZWFuIHVw
IHNvbWUgV2ViQXV0b21hdGlvblNlc3Npb24gbWV0aG9kcyB0byB1c2UgbW9kZXJuIGFzeW5jIElQ
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRpZFNlbGVjdE9wdGlvbkVsZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluOgorCiAy
MDE5LTAzLTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBB
dXRvbWF0aW9uOiBzdXBwb3J0IHVwbG9hZGluZyBub24tbG9jYWwgZmlsZSBwYXRocwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAppbmRleCBhYzVkNTQyMzZjZGM0MjkwMjVjNDYyOTI4NjYyZDE2NjQwOTQ5
NmVhLi5lYTg5ZWYxMjk3YTUzMTNlZjk3ZmMzZWM4MDRkYjdiMzA1YjJiZDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcApAQCAtMTEyMiwyNyArMTEyMiwxOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZAogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9u
ZXh0U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrSUQrKzsKLSAgICBtX3NlbGVjdE9wdGlvbkVs
ZW1lbnRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpTZWxlY3RPcHRpb25FbGVtZW50KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksIG5v
ZGVIYW5kbGUsIGNhbGxiYWNrSUQpLCAwKTsKLX0KLQotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6ZGlkU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJp
bmcmIGVycm9yVHlwZSkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9zZWxlY3RPcHRpb25FbGVt
ZW50Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRShl
cnJvclR5cGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxi
YWNrID0gY2FsbGJhY2suY29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChlcnJvclR5cGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBl
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH07CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBhZ2UtPnBhZ2VJ
RCgpLCBmcmFtZUlELnZhbHVlKCksIG5vZGVIYW5kbGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLQogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNj
cmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDBiOGI4NmZjZTFjNmRlYmQ3NzFhYmUw
ZmFjOWUzYjQ5N2Y2NjJlNDAuLjExMDczY2FlYTk5ZmY3NDAzYmZjNzk0OGJiZTE2NTdmNWUxMDll
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQXV0b21hdGlvbkZyb250ZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCkBAIC0yMzIsNyArMjM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1heGltaXplV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoaWRlV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkm
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2ZXIuY3BwLgor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIChJbXBsZW1lbnRlZCBieSBnZW5lcmF0ZWQgY29k
ZSBpbiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHApLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb24gbWVzc2FnZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgppbmRleCBlOTg5YmFhZjIwODU4YjQx
NTVlNjY1MTY3MDEyNjRmMzFiYTI0YTY0Li43OTliMjY3YjlhNDhiMGRhZTAxYWZkNWE4MDA2MDA3
YTE1OThlNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KQEAgLTI4
LDggKzI4LDYgQEAgbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb24gewogCiAgICAgRGlk
Q29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6SW50UmVj
dCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJv
b2wgaXNPYnNjdXJlZCwgU3RyaW5nIGVycm9yVHlwZSkKIAotICAgIERpZFNlbGVjdE9wdGlvbkVs
ZW1lbnQodWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIGVycm9yVHlwZSkKLQogICAgIERpZFRh
a2VTY3JlZW5zaG90KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaW1hZ2VEYXRhSGFuZGxlLCBTdHJpbmcgZXJyb3JUeXBlKQogCiAgICAgRGlkR2V0
Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMsIFN0cmluZyBlcnJvclR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwCmluZGV4IDhhNWQ0MTRjMzQyZDMyODBlMDZiM2FjY2JlYTY3ZDQ1NDdjNjJjYjAuLmVi
OGIzYzRhOTBiNmRkYTlmY2M3M2U5MmE1MDkxZDkyMWE3M2EyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwCkBAIC02MDMsMzkgKzYwMywzOSBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxl
bWVudExheW91dChjYWxsYmFja0lELCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdD
ZW50ZXJQb2ludCwgaXNPYnNjdXJlZCwgU3RyaW5nKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRF
cnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNz
YWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIHdpbmRvd05vdEZvdW5kRXJy
b3JUeXBlKSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZvdW5kRXJy
b3JUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkZyYW1lKiBmcmFtZSA9
IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6IHBh
Z2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUo
KSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgU3RyaW5nIGZyYW1l
Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVy
czo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJRCwgZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZv
dW5kRXJyb3JUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkVs
ZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1lLCBub2RlSGFu
ZGxlKTsKICAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICghaXM8V2ViQ29yZTo6SFRNTE9wdGlvbkVs
ZW1lbnQ+KGNvcmVFbGVtZW50KSAmJiAhaXM8V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4o
Y29yZUVsZW1lbnQpKSkgewogICAgICAgICBTdHJpbmcgbm9kZU5vdEZvdW5kRXJyb3JUeXBlID0g
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZh
bHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6Tm9kZU5v
dEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVj
dE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJRCwgbm9kZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5vZGVOb3RGb3VuZEVycm9yVHlwZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBTdHJpbmcgZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9y
VHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29u
c3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6
OkVsZW1lbnROb3RJbnRlcmFjdGFibGUpOwogICAgIGlmIChpczxXZWJDb3JlOjpIVE1MT3B0R3Jv
dXBFbGVtZW50Pihjb3JlRWxlbWVudCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1lbnQoY2FsbGJhY2tJRCwgZWxlbWVudE5vdElu
dGVyYWN0YWJsZUVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbGVt
ZW50Tm90SW50ZXJhY3RhYmxlRXJyb3JUeXBlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8mIG9wdGlvbkVsZW1lbnQgPSBkb3duY2FzdDxXZWJDb3JlOjpIVE1MT3B0aW9uRWxl
bWVudD4oKmNvcmVFbGVtZW50KTsKICAgICBhdXRvKiBzZWxlY3RFbGVtZW50ID0gb3B0aW9uRWxl
bWVudC5vd25lclNlbGVjdEVsZW1lbnQoKTsKICAgICBpZiAoIXNlbGVjdEVsZW1lbnQpIHsKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFNlbGVjdE9wdGlvbkVsZW1l
bnQoY2FsbGJhY2tJRCwgZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSksIDApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihlbGVtZW50Tm90SW50ZXJhY3RhYmxlRXJyb3JUeXBlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyCiAgICAgICAgIC8vIG9wdGlvblNlbGVjdGVkQnlVc2VyKCkgd2lsbCBmaXJl
IGlucHV0IGFuZCBjaGFuZ2UgZXZlbnRzIGlmIG5lZWRlZCwgYnV0IGFsbCBvdGhlciBldmVudHMg
c2hvdWxkIGJlIGZpcmVkIG1hbnVhbGx5IGhlcmUuCiAgICAgICAgIHNlbGVjdEVsZW1lbnQtPm9w
dGlvblNlbGVjdGVkQnlVc2VyKG9wdGlvbkVsZW1lbnQuaW5kZXgoKSwgdHJ1ZSwgc2VsZWN0RWxl
bWVudC0+bXVsdGlwbGUoKSk7CiAgICAgfQotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIHsgfSksIDApOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpJbnRS
ZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxl
bWVudCogZWxlbWVudCwgYm9vbCBjbGlwVG9WaWV3cG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuaAppbmRleCA3NTYwZjA2OTU3MWZjOGM0MDFmYzU5YWIyMTQ5NzAwNTE1YmU5NWNlLi42
ODFiMzViNjcyZWQwMzFhYmQ0NGZkMGQ3YWQwMzVhZDA5ZTZjZTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNv
bHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKICAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Ym9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRD
b29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJj
MTNhNjZkNmIyMTJkMWM4OWQ4YmJlZDQ4ODA0MGRjOWNkODU4YjQuLjRlYjFlMmU5YTcwYWQyNzRj
ZjhkNTE1MWY0YmMxODk0MmQzYzgxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkgewogCiAgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCisgICAgU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBl
cnJvclR5cGUpIEFzeW5jCiAKICAgICBUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZO
ZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365891</attachid>
            <date>2019-03-25 13:28:38 -0700</date>
            <delta_ts>2019-04-04 13:00:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196168-20190325132838.patch</filename>
            <type>text/plain</type>
            <size>52390</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiNTYwYzRmNzQ0ODdjZWUy
MmUyZGJmOTk2YjRiZGU0YjU0NjUwZmUuLmE4MDJmNGYxNjQ4Y2UzZTRkOWY2M2UwZWY3NGRkNmZh
MDQxYmYxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTktMDMtMjUgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEF1dG9tYXRpb246IGNsZWFuIHVw
IHNvbWUgV2ViQXV0b21hdGlvblNlc3Npb24gbWV0aG9kcyB0byB1c2UgbW9kZXJuIGFzeW5jIElQ
QworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kZXJu
IFdlYktpdCBJUEMgaXMgY2FwYWJsZSBvZiBwcm92aWRpbmcgY29tcGxldGlvbiBoYW5kbGVycyBh
bmQgY2FuIHRyYWNrIGNhbGxiYWNrIElEcy4KKyAgICAgICAgU28sIG1vc3QgbWVzc2FnZXMgYmV0
d2VlbiBXZWJBdXRvbWF0aW9uU2Vzc2lvbiBhbmQgaXRzIHByb3h5IGNhbiB1c2UgdGhpcyBmYWNp
bGl0eSwgYW5kIHN0b3AKKyAgICAgICAga2VlcGluZyB0cmFjayBvZiBjYWxsYmFjayBJRHMgbWFu
dWFsbHkuIFRoaXMgbWFrZXMgbW9zdCBjb2RlIGVhc2llciB0byByZWFkIG9uIGJvdGggdGhlCisg
ICAgICAgIHNlbmRlciBhbmQgcmVjZWl2ZXIgc2lkZS4KKworICAgICAgICBUaGVyZSBhcmUgdHdv
IGNhc2VzIHRoYXQgY291bGQgbm90IGJlIGNvbnZlcnRlZDoKKyAgICAgICAgLSBGb3IgZXZhbHVh
dGVKYXZhU2NyaXB0LCB3ZSBjYW5ub3QgdXNlIGFzeW5jIElQQyBiZWNhdXNlIFdlYkF1dG9tYXRp
b25TZXNzaW9uIGV4cGVjdHMgdG8KKyAgICAgICAgYmUgYWJsZSB0byBjYW5jZWwgYWxsIHBlbmRp
bmcgcmVwbGllcyB3aGVuIGEgcGFnZSBuYXZpZ2F0ZXMgYXdheSwgdGhlIHdlYiBwcm9jZXNzIGNy
YXNoZXMsCisgICAgICAgIG9yIHdoZW4gaGFuZGxpbmcgYW4gYWxlcnQuCisgICAgICAgIC0gRm9y
IHRha2VTY3JlZW5zaG90LCB0aGVyZSBpcyBub3QgY3VycmVudGx5IHN1cHBvcnQgaW4gdGhlIG1v
ZGVybiBhc3luYyBJUEMgY29kZSBwYXRocyBmb3IKKyAgICAgICAgc2VuZGluZyB0aGUgcmVzdWx0
IGJhY2suIFNoYXJlYWJsZUJpdG1hcCBhbmQgZnJpZW5kcyBsYWNrIGEgbW9kZXJuIGRlY29kZXIg
aW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpyZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpnZXRBbGxDb29raWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNvb2tpZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBv
aW50T2ZFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRp
ZFJlc29sdmVDaGlsZEZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21h
dGlvblNlc3Npb246OmRpZFJlc29sdmVQYXJlbnRGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRDb21wdXRlRWxlbWVudExheW91dCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWRTZWxlY3RP
cHRpb25FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNl
c3Npb246OmRpZEdldENvb2tpZXNGb3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpkaWREZWxldGVDb29raWUpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0
aE5hbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlUGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Ojpjb21wdXRlRWxlbWVudExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW46CisKIDIwMTktMDMtMjUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtBcHBsZSBQYXldIFJlbW92ZSB0aGUgQXZhaWxhYmxlUGF5bWVudE5ldHdv
cmtzIHN5bmNocm9ub3VzIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggZDAyMTY4
OTYxMmZkNzRkZWIxNjY2MmZhYmY1NmI0N2NlNmFkOWY3MC4uNTk0MjFmZDg4MWZkMTM4NmIzMzBh
MmFmZTU5NTMxMDJlYTJjNWFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTk3MCwzOSAr
OTcwLDMzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVDaGlsZEZyYW1lSGFu
ZGxlKGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0CiAgICAgaWYgKCFmcmFtZUlEKQogICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihGcmFtZU5vdEZvdW5kKTsKIAot
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX25leHRSZXNvbHZlRnJhbWVDYWxsYmFja0lEKys7
Ci0gICAgbV9yZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOworICAgIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBjYWxsYmFjay5jb3B5UmVmKCld
KE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGVycm9yVHlwZSkgeworICAgICAgICAgICAgY2FsbGJhY2stPnNlbmRGYWls
dXJlKFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKCplcnJvclR5cGUpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3Vj
Y2VzcyhoYW5kbGVGb3JXZWJGcmFtZUlEKGZyYW1lSUQpKTsKKyAgICB9OwogCiAgICAgaWYgKG9w
dGlvbmFsTm9kZUhhbmRsZSkgewotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhh
bmRsZShwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgpLCAqb3B0aW9uYWxOb2RlSGFuZGxl
LCBjYWxsYmFja0lEKSwgMCk7CisgICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVDaGlsZEZy
YW1lV2l0aE5vZGVIYW5kbGUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSwgKm9wdGlv
bmFsTm9kZUhhbmRsZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChvcHRpb25hbE5hbWUpIHsKLSAgICAgICAgcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OlJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUocGFnZS0+cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSwgKm9wdGlv
bmFsTmFtZSwgY2FsbGJhY2tJRCksIDApOworICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksICpvcHRp
b25hbE5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAob3B0aW9uYWxPcmRpbmFsKSB7Ci0gICAgICAgIHBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlQ2hp
bGRGcmFtZVdpdGhPcmRpbmFsKHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksICpvcHRp
b25hbE9yZGluYWwsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6UmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChwYWdlLT5wYWdlSUQoKSwgZnJhbWVJRC52YWx1ZSgp
LCAqb3B0aW9uYWxPcmRpbmFsKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmRpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxi
YWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQotewotICAg
IGF1dG8gY2FsbGJhY2sgPSBtX3Jlc29sdmVDaGlsZEZyYW1lSGFuZGxlQ2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKQotICAgICAgICBjYWxsYmFjay0+c2VuZEZhaWx1cmUo
U1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0UoZXJyb3JUeXBlKSk7Ci0gICAgZWxz
ZQotICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoaGFuZGxlRm9yV2ViRnJhbWVJRChmcmFt
ZUlEKSk7Ci19Ci0KIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc29sdmVQYXJlbnRGcmFt
ZUhhbmRsZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5n
JiBmcmFtZUhhbmRsZSwgUmVmPFJlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrPiYmIGNh
bGxiYWNrKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRs
ZShicm93c2luZ0NvbnRleHRIYW5kbGUpOwpAQCAtMTAxMywyMiArMTAwNywxNiBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjpyZXNvbHZlUGFyZW50RnJhbWVIYW5kbGUoY29uc3QgU3RyaW5n
JiBicm93c2luZ0NvbnRleAogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgQVNZTkNfRkFJTF9X
SVRIX1BSRURFRklORURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gbV9uZXh0UmVzb2x2ZVBhcmVudEZyYW1lQ2FsbGJhY2tJRCsrOwotICAgIG1fcmVz
b2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Ci0KLSAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6UmVzb2x2ZVBhcmVudEZyYW1lKHBhZ2UtPnBhZ2VJRCgpLCBmcmFt
ZUlELnZhbHVlKCksIGNhbGxiYWNrSUQpLCAwKTsKLX0KLQotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6ZGlkUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKQotewotICAgIGF1dG8gY2FsbGJhY2sg
PSBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRsZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwot
ICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKKyAgICBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiBjb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNrID0gY2Fs
bGJhY2suY29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJh
bWVJRCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvclR5cGUpIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgq
ZXJyb3JUeXBlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIGlmICgh
ZXJyb3JUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgY2FsbGJhY2stPnNlbmRGYWlsdXJlKFNUUklO
R19GT1JfUFJFREVGSU5FRF9FUlJPUl9NRVNTQUdFKGVycm9yVHlwZSkpOwotICAgIGVsc2UKICAg
ICAgICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGhhbmRsZUZvcldlYkZyYW1lSUQoZnJhbWVJRCkp
OworICAgIH07CisKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpSZXNvbHZlUGFyZW50RnJhbWUocGFnZS0+
cGFnZUlEKCksIGZyYW1lSUQudmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogc3RhdGljIE9wdGlvbmFsPENvb3JkaW5hdGVTeXN0ZW0+IHByb3RvY29sU3RyaW5nVG9D
b29yZGluYXRlU3lzdGVtKGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbVN0cmluZykKQEAg
LTEwNTQsNjIgKzEwNDIsNDIgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Y29tcHV0ZUVs
ZW1lbnRMYXlvdXQoY29uc3QgU3RyaW5nJiBicm93c2luZ0NvbnRleHRIYW4KICAgICBpZiAoIWNv
b3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIEFTWU5DX0ZBSUxfV0lUSF9QUkVERUZJTkVEX0VSUk9S
X0FORF9ERVRBSUxTKEludmFsaWRQYXJhbWV0ZXIsICJUaGUgcGFyYW1ldGVyICdjb29yZGluYXRl
U3lzdGVtJyBpcyBpbnZhbGlkLiIpOwogCi0gICAgLy8gU3RhcnQgYXQgMiBhbmQgdXNlIG9ubHkg
ZXZlbiBudW1iZXJzIHRvIG5vdCBjb25mbGljdCB3aXRoIG1fbmV4dFZpZXdwb3J0SW5WaWV3Q2Vu
dGVyUG9pbnRPZkVsZW1lbnRDYWxsYmFja0lELgotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X25leHRDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrSUQgKz0gMjsKLSAgICBtX2NvbXB1dGVF
bGVtZW50TGF5b3V0Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBXVEZNb3ZlKGNhbGxiYWNrKSk7
Ci0KLSAgICBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSBvcHRpb25hbFNjcm9sbEludG9W
aWV3SWZOZWVkZWQgPyAqb3B0aW9uYWxTY3JvbGxJbnRvVmlld0lmTmVlZGVkIDogZmFsc2U7Ci0g
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCks
IG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNvb3JkaW5hdGVTeXN0ZW0udmFs
dWUoKSwgY2FsbGJhY2tJRCksIDApOwotfQotCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpk
aWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lELCBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwg
Ym9vbCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKLXsKLSAgICBpZiAoY2Fs
bGJhY2tJRCAlIDIgPT0gMSkgewotICAgICAgICBBU1NFUlQoaW5WaWV3Q2VudGVyUG9pbnQpOwot
ICAgICAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fdmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9m
RWxlbWVudENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpKSB7Ci0gICAgICAgICAgICBPcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcjsKLSAgICAgICAgICAgIGlmICghZXJyb3JU
eXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBlcnJvciA9IEFVVE9NQVRJT05fQ09NTUFO
RF9FUlJPUl9XSVRIX01FU1NBR0UoZXJyb3JUeXBlKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKGlu
Vmlld0NlbnRlclBvaW50LCBlcnJvcik7CisgICAgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrID0gY2FsbGJhY2su
Y29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wg
aXNPYnNjdXJlZCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJvclR5cGUpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVT
U0FHRSgqZXJyb3JUeXBlKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvbXB1dGVFbGVtZW50
TGF5b3V0Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FH
RShlcnJvclR5cGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgYXV0byBvcmln
aW5PYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRl
KCkKKyAgICAgICAgICAgIC5zZXRYKHJlY3QueCgpKQorICAgICAgICAgICAgLnNldFkocmVjdC55
KCkpCisgICAgICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgYXV0byBvcmlnaW5PYmplY3QgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRlKCkKLSAgICAgICAg
LnNldFgocmVjdC54KCkpCi0gICAgICAgIC5zZXRZKHJlY3QueSgpKQotICAgICAgICAucmVsZWFz
ZSgpOworICAgICAgICBhdXRvIHNpemVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpTaXplOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNldFdpZHRoKHJlY3Qud2lkdGgo
KSkKKyAgICAgICAgICAgIC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSkKKyAgICAgICAgICAgIC5y
ZWxlYXNlKCk7CiAKLSAgICBhdXRvIHNpemVPYmplY3QgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpTaXplOjpjcmVhdGUoKQotICAgICAgICAuc2V0V2lkdGgocmVjdC53aWR0aCgp
KQotICAgICAgICAuc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIC5yZWxlYXNlKCk7
CisgICAgICAgIGF1dG8gcmVjdE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlJlY3Q6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0T3JpZ2luKFdURk1vdmUob3JpZ2lu
T2JqZWN0KSkKKyAgICAgICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVjdCkpCisgICAg
ICAgICAgICAucmVsZWFzZSgpOwogCi0gICAgYXV0byByZWN0T2JqZWN0ID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UmVjdDo6Y3JlYXRlKCkKLSAgICAgICAgLnNldE9yaWdpbihX
VEZNb3ZlKG9yaWdpbk9iamVjdCkpCi0gICAgICAgIC5zZXRTaXplKFdURk1vdmUoc2l6ZU9iamVj
dCkpCi0gICAgICAgIC5yZWxlYXNlKCk7CisgICAgICAgIGlmICghaW5WaWV3Q2VudGVyUG9pbnQp
IHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZNb3ZlKHJlY3RPYmplY3Qp
LCBudWxscHRyLCBpc09ic2N1cmVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgaWYgKCFpblZpZXdDZW50ZXJQb2ludCkgewotICAgICAgICBjYWxsYmFjay0+c2VuZFN1
Y2Nlc3MoV1RGTW92ZShyZWN0T2JqZWN0KSwgbnVsbHB0ciwgaXNPYnNjdXJlZCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgICAgIGF1dG8gaW5WaWV3Q2VudGVyUG9pbnRPYmplY3QgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQb2ludDo6Y3JlYXRlKCkKKyAgICAgICAg
ICAgIC5zZXRYKGluVmlld0NlbnRlclBvaW50LnZhbHVlKCkueCgpKQorICAgICAgICAgICAgLnNl
dFkoaW5WaWV3Q2VudGVyUG9pbnQudmFsdWUoKS55KCkpCisgICAgICAgICAgICAucmVsZWFzZSgp
OwogCi0gICAgYXV0byBpblZpZXdDZW50ZXJQb2ludE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlBvaW50OjpjcmVhdGUoKQotICAgICAgICAuc2V0WChpblZpZXdDZW50
ZXJQb2ludC52YWx1ZSgpLngoKSkKLSAgICAgICAgLnNldFkoaW5WaWV3Q2VudGVyUG9pbnQudmFs
dWUoKS55KCkpCi0gICAgICAgIC5yZWxlYXNlKCk7CisgICAgICAgIGNhbGxiYWNrLT5zZW5kU3Vj
Y2VzcyhXVEZNb3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmlld0NlbnRlclBvaW50T2JqZWN0
KSwgaXNPYnNjdXJlZCk7CisgICAgfTsKIAotICAgIGNhbGxiYWNrLT5zZW5kU3VjY2VzcyhXVEZN
b3ZlKHJlY3RPYmplY3QpLCBXVEZNb3ZlKGluVmlld0NlbnRlclBvaW50T2JqZWN0KSwgaXNPYnNj
dXJlZCk7CisgICAgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkID0gb3B0aW9uYWxTY3JvbGxJ
bnRvVmlld0lmTmVlZGVkID8gKm9wdGlvbmFsU2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCA6IGZhbHNl
OworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UtPnBhZ2VJRCgp
LCBmcmFtZUlELnZhbHVlKCksIG5vZGVIYW5kbGUsIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGNv
b3JkaW5hdGVTeXN0ZW0udmFsdWUoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2VsZWN0T3B0aW9uRWxlbWVudChjb25zdCBT
dHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBmcmFtZUhhbmRsZSwg
Y29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBSZWY8U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNr
PiYmIGNhbGxiYWNrKQpAQCAtMTEyMiwyNyArMTA5MCwxOCBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpzZWxlY3RPcHRpb25FbGVtZW50KGNvbnN0IFN0cmluZyYgYnJvd3NpbmdDb250ZXh0
SGFuZAogICAgIGlmICghZnJhbWVJRCkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklO
RURfRVJST1IoRnJhbWVOb3RGb3VuZCk7CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9u
ZXh0U2VsZWN0T3B0aW9uRWxlbWVudENhbGxiYWNrSUQrKzsKLSAgICBtX3NlbGVjdE9wdGlvbkVs
ZW1lbnRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKLQotICAg
IHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpTZWxlY3RPcHRpb25FbGVtZW50KHBhZ2UtPnBhZ2VJRCgpLCBmcmFtZUlELnZhbHVlKCksIG5v
ZGVIYW5kbGUsIGNhbGxiYWNrSUQpLCAwKTsKLX0KLQotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6ZGlkU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBTdHJp
bmcmIGVycm9yVHlwZSkKLXsKLSAgICBhdXRvIGNhbGxiYWNrID0gbV9zZWxlY3RPcHRpb25FbGVt
ZW50Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNh
bGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRShl
cnJvclR5cGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxi
YWNrID0gY2FsbGJhY2suY29weVJlZigpXShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0
YWJsZSB7CisgICAgICAgIGlmIChlcnJvclR5cGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5z
ZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBl
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNh
bGxiYWNrLT5zZW5kU3VjY2VzcygpOworICAgIH07CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nl
c3MoKTsKKyAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpTZWxlY3RPcHRpb25FbGVtZW50KHBhZ2UtPnBhZ2VJ
RCgpLCBmcmFtZUlELnZhbHVlKCksIG5vZGVIYW5kbGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLQogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aXNTaG93aW5nSmF2YVNj
cmlwdERpYWxvZyhJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiBicm93c2luZ0NvbnRleHRIYW5kbGUsIGJvb2wqIHJlc3VsdCkKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwpAQCAtMTI3MCwyMSArMTIyOSw2IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnNldEZpbGVzVG9TZWxlY3RGb3JGaWxlVXBsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
CiAgICAgbV9maWxlc1RvU2VsZWN0Rm9yRmlsZVVwbG9hZC5zd2FwKG5ld0ZpbGVMaXN0KTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6Z2V0QWxsQ29va2llcyhjb25zdCBTdHJpbmcm
IGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgUmVmPEdldEFsbENvb2tpZXNDYWxsYmFjaz4mJiBjYWxs
YmFjaykKLXsKLSAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJQYWdlUHJveHlGb3JIYW5kbGUo
YnJvd3NpbmdDb250ZXh0SGFuZGxlKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIEFTWU5DX0ZB
SUxfV0lUSF9QUkVERUZJTkVEX0VSUk9SKFdpbmRvd05vdEZvdW5kKTsKLQotICAgIC8vIEFsd2F5
cyBzZW5kIHRoZSBtYWluIGZyYW1lIElEIGFzIDAgc28gaXQgaXMgcmVzb2x2ZWQgb24gdGhlIFdl
YlByb2Nlc3Mgc2lkZS4gVGhpcyBhdm9pZHMgYSByYWNlIHdoZW4gcGFnZS0+bWFpbkZyYW1lKCkg
aXMgbnVsbCBzdGlsbC4KLSAgICBjb25zdCB1aW50NjRfdCBtYWluRnJhbWVJRCA9IDA7Ci0KLSAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9uZXh0R2V0Q29va2llc0NhbGxiYWNrSUQrKzsKLSAg
ICBtX2dldENvb2tpZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykp
OwotCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OkdldENvb2tpZXNGb3JGcmFtZShwYWdlLT5wYWdlSUQoKSwgbWFpbkZyYW1lSUQs
IGNhbGxiYWNrSUQpLCAwKTsKLX0KLQogc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IFdlYkNvcmU6OkNv
b2tpZSYgY29va2llKQogewogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpDb29raWU6OmNyZWF0ZSgpCkBAIC0xMzEwLDE4ICsxMjU0LDI0IEBAIHN0YXRpYyBSZWY8
SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpDb29raWU+PiBi
dWlsZEFycmF5Rm9yCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb246OmRpZEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBjYWxsYmFja0lELCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSkKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OmdldEFsbENvb2tpZXMoY29uc3QgU3RyaW5nJiBicm93
c2luZ0NvbnRleHRIYW5kbGUsIFJlZjxHZXRBbGxDb29raWVzQ2FsbGJhY2s+JiYgY2FsbGJhY2sp
CiB7Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fZ2V0Q29va2llQ2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJRCk7Ci0gICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOworICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IHdlYlBhZ2VQcm94eUZvckhhbmRsZShicm93c2luZ0NvbnRleHRIYW5kbGUp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJS
T1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgaWYgKCFlcnJvclR5cGUuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1Jf
TUVTU0FHRShlcnJvclR5cGUpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFtjYWxsYmFjayA9IGNhbGxiYWNrLmNvcHlSZWYo
KV0oT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNv
b2tpZXMpIG11dGFibGUgeworICAgICAgICBpZiAoZXJyb3JUeXBlKSB7CisgICAgICAgICAgICBj
YWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
KmVycm9yVHlwZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y2FsbGJhY2stPnNlbmRTdWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNvb2tpZXMpKTsKKyAg
ICB9OwogCi0gICAgY2FsbGJhY2stPnNlbmRTdWNjZXNzKGJ1aWxkQXJyYXlGb3JDb29raWVzKGNv
b2tpZXMpKTsKKyAgICAvLyBBbHdheXMgc2VuZCB0aGUgbWFpbiBmcmFtZSBJRCBhcyAwIHNvIGl0
IGlzIHJlc29sdmVkIG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUuIFRoaXMgYXZvaWRzIGEgcmFjZSB3
aGVuIHBhZ2UtPm1haW5GcmFtZSgpIGlzIG51bGwgc3RpbGwuCisgICAgY29uc3QgdWludDY0X3Qg
bWFpbkZyYW1lSUQgPSAwOworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkdldENvb2tpZXNGb3JGcmFtZShw
YWdlLT5wYWdlSUQoKSwgbWFpbkZyYW1lSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNvb2tpZShjb25z
dCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
LCBSZWY8RGVsZXRlU2luZ2xlQ29va2llQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0xMzMwLDI3
ICsxMjgwLDE4IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZVNpbmdsZUNvb2tp
ZShjb25zdCBTdHJpbmcmIGJyb3dzaW5nQ29udGV4dEhhbmRsCiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICBBU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAK
LSAgICAvLyBBbHdheXMgc2VuZCB0aGUgbWFpbiBmcmFtZSBJRCBhcyAwIHNvIGl0IGlzIHJlc29s
dmVkIG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUuIFRoaXMgYXZvaWRzIGEgcmFjZSB3aGVuIHBhZ2Ut
Pm1haW5GcmFtZSgpIGlzIG51bGwgc3RpbGwuCi0gICAgY29uc3QgdWludDY0X3QgbWFpbkZyYW1l
SUQgPSAwOwotCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fbmV4dERlbGV0ZUNvb2tpZUNh
bGxiYWNrSUQrKzsKLSAgICBtX2RlbGV0ZUNvb2tpZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
V1RGTW92ZShjYWxsYmFjaykpOwotCi0gICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkRlbGV0ZUNvb2tpZShwYWdlLT5wYWdlSUQoKSwg
bWFpbkZyYW1lSUQsIGNvb2tpZU5hbWUsIGNhbGxiYWNrSUQpLCAwKTsKLX0KLQotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6ZGlkRGVsZXRlQ29va2llKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKQotewotICAgIGF1dG8gY2FsbGJhY2sgPSBtX2RlbGV0ZUNv
b2tpZUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOwotICAgIGlmICghY2FsbGJhY2spCi0gICAg
ICAgIHJldHVybjsKKyAgICBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW2NhbGxiYWNrID0gY2FsbGJhY2suY29weVJlZigp
XShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgbXV0YWJsZSB7CisgICAgICAgIGlmIChlcnJv
clR5cGUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5zZW5kRmFpbHVyZShTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTUVTU0FHRSgqZXJyb3JUeXBlKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KIAotICAgIGlmICghZXJyb3JUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBj
YWxsYmFjay0+c2VuZEZhaWx1cmUoU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VSUk9SX01FU1NBR0Uo
ZXJyb3JUeXBlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgICAgIGNhbGxiYWNrLT5z
ZW5kU3VjY2VzcygpOworICAgIH07CiAKLSAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKKyAg
ICAvLyBBbHdheXMgc2VuZCB0aGUgbWFpbiBmcmFtZSBJRCBhcyAwIHNvIGl0IGlzIHJlc29sdmVk
IG9uIHRoZSBXZWJQcm9jZXNzIHNpZGUuIFRoaXMgYXZvaWRzIGEgcmFjZSB3aGVuIHBhZ2UtPm1h
aW5GcmFtZSgpIGlzIG51bGwgc3RpbGwuCisgICAgY29uc3QgdWludDY0X3QgbWFpbkZyYW1lSUQg
PSAwOworICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OkRlbGV0ZUNvb2tpZShwYWdlLT5wYWdlSUQoKSwgbWFp
bkZyYW1lSUQsIGNvb2tpZU5hbWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHN0YXRpYyBTdHJpbmcgZG9tYWluQnlBZGRpbmdEb3RQcmVmaXhJZk5lZWRlZChTdHJpbmcgZG9t
YWluKQpAQCAtMTUxOCwxMSArMTQ1OSwxNyBAQCBTaW11bGF0ZWRJbnB1dFNvdXJjZSogV2ViQXV0
b21hdGlvblNlc3Npb246OmlucHV0U291cmNlRm9yVHlwZShTaW11bGF0ZWRJbnB1dFNvdQogLy8g
TUFSSzogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjpDbGllbnQgQVBJCiB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uOjp2aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50KFdlYlBhZ2VQ
cm94eSYgcGFnZSwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBG
dW5jdGlvbjx2b2lkIChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIE9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICAvLyBTdGFy
dCBhdCAzIGFuZCB1c2Ugb25seSBvZGQgbnVtYmVycyB0byBub3QgY29uZmxpY3Qgd2l0aCBtX25l
eHRDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrSUQuCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fbmV4dFZpZXdwb3J0SW5WaWV3Q2VudGVyUG9pbnRPZkVsZW1lbnRDYWxsYmFja0lEICs9
IDI7Ci0gICAgbV92aWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZFbGVtZW50Q2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+IGRpZENvbXB1dGVFbGVtZW50TGF5b3V0
SGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKGVycm9yVHlwZSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0LCBBVVRPTUFUSU9OX0NPTU1BTkRfRVJST1JfV0lUSF9NRVNTQUdFKCplcnJvclR5
cGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChp
blZpZXdDZW50ZXJQb2ludCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGluVmlld0NlbnRl
clBvaW50LCBXVEY6Om51bGxvcHQpOworICAgIH07CiAKLSAgICBwYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpDb21wdXRlRWxlbWVudExheW91
dChwYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBub2RlSGFuZGxlLCBmYWxzZSwgQ29vcmRpbmF0ZVN5
c3RlbTo6TGF5b3V0Vmlld3BvcnQsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICBwYWdlLnByb2Nlc3Mo
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OkNvbXB1dGVFbGVtZW50TGF5b3V0KHBhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5vZGVIYW5kbGUs
IGZhbHNlLCBDb29yZGluYXRlU3lzdGVtOjpMYXlvdXRWaWV3cG9ydCksIFdURk1vdmUoZGlkQ29t
cHV0ZUVsZW1lbnRMYXlvdXRIYW5kbGVyKSk7CiB9CiAKICNpZiBFTkFCTEUoV0VCRFJJVkVSX01P
VVNFX0lOVEVSQUNUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCAwYjhiODZmY2UxYzZkZWJk
NzcxYWJlMGZhYzllM2I0OTdmNjYyZTQwLi42NWViM2U0NmU1Yjg4YmE4MmFjMmQxMDI0ZWNhZTYz
Y2IzNGQ3MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiQXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkF1dG9tYXRpb25G
cm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgpAQCAtMjMyLDE4ICsyMzQsMTIgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIG1heGltaXplV2luZG93Rm9yUGFnZShXZWJQYWdlUHJveHkmLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBoaWRlV2luZG93Rm9yUGFnZShXZWJQ
YWdlUHJveHkmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICAvLyBJ
bXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdlUmVjZWl2
ZXIuY3BwLgorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyIChJbXBsZW1lbnRlZCBieSBnZW5l
cmF0ZWQgY29kZSBpbiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VSZWNlaXZlci5jcHApLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb24gbWVz
c2FnZXMuCiAgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBj
YWxsYmFja0lELCBjb25zdCBTdHJpbmcmIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUp
OwotICAgIHZvaWQgZGlkUmVzb2x2ZUNoaWxkRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBlcnJvclR5cGUpOwotICAgIHZvaWQgZGlkUmVz
b2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKLSAgICB2b2lkIGRpZENvbXB1dGVFbGVtZW50TGF5b3V0
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiwgYm9vbCBpc09ic2N1cmVkLCBjb25zdCBTdHJpbmcmIGVycm9yVHlwZSk7Ci0g
ICAgdm9pZCBkaWRTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFN0cmluZyYgZXJyb3JUeXBlKTsKICAgICB2b2lkIGRpZFRha2VTY3JlZW5zaG90KHVpbnQ2NF90
IGNhbGxiYWNrSUQsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiwgY29uc3QgU3RyaW5n
JiBlcnJvclR5cGUpOwotICAgIHZvaWQgZGlkR2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+LCBjb25zdCBTdHJpbmcmIGVycm9yVHlw
ZSk7Ci0gICAgdm9pZCBkaWREZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3Qg
U3RyaW5nJiBlcnJvclR5cGUpOwogCiAgICAgLy8gUGxhdGZvcm0tZGVwZW5kZW50IGltcGxlbWVu
dGF0aW9ucy4KICNpZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykKQEAgLTMw
NSwzMiArMzAxLDkgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFT
Y3JpcHRDYWxsYmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uQ2FsbGJhY2s+PiBtX2V2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uQ2FsbGJh
Y2tzOwogCi0gICAgdWludDY0X3QgbV9uZXh0UmVzb2x2ZUZyYW1lQ2FsbGJhY2tJRCB7IDEgfTsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyOjpSZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrPj4gbV9y
ZXNvbHZlQ2hpbGRGcmFtZUhhbmRsZUNhbGxiYWNrczsKLQotICAgIHVpbnQ2NF90IG1fbmV4dFJl
c29sdmVQYXJlbnRGcmFtZUNhbGxiYWNrSUQgeyAxIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVz
b2x2ZVBhcmVudEZyYW1lSGFuZGxlQ2FsbGJhY2s+PiBtX3Jlc29sdmVQYXJlbnRGcmFtZUhhbmRs
ZUNhbGxiYWNrczsKLQotICAgIC8vIFN0YXJ0IGF0IDIgYW5kIHVzZSBvbmx5IGV2ZW4gbnVtYmVy
cyB0byBub3QgY29uZmxpY3Qgd2l0aCBtX25leHRWaWV3cG9ydEluVmlld0NlbnRlclBvaW50T2ZF
bGVtZW50Q2FsbGJhY2tJRC4KLSAgICB1aW50NjRfdCBtX25leHRDb21wdXRlRWxlbWVudExheW91
dENhbGxiYWNrSUQgeyAyIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rv
cjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6Q29tcHV0ZUVsZW1lbnRMYXlv
dXRDYWxsYmFjaz4+IG1fY29tcHV0ZUVsZW1lbnRMYXlvdXRDYWxsYmFja3M7Ci0KLSAgICAvLyBT
dGFydCBhdCAzIGFuZCB1c2Ugb25seSBvZGQgbnVtYmVycyB0byBub3QgY29uZmxpY3Qgd2l0aCBt
X25leHRDb21wdXRlRWxlbWVudExheW91dENhbGxiYWNrSUQuCi0gICAgdWludDY0X3QgbV9uZXh0
Vmlld3BvcnRJblZpZXdDZW50ZXJQb2ludE9mRWxlbWVudENhbGxiYWNrSUQgeyAzIH07Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2lu
dD4sIE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fdmlld3BvcnRJblZpZXdD
ZW50ZXJQb2ludE9mRWxlbWVudENhbGxiYWNrczsKLQogICAgIHVpbnQ2NF90IG1fbmV4dFNjcmVl
bnNob3RDYWxsYmFja0lEIHsgMSB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlRha2VTY3JlZW5zaG90
Q2FsbGJhY2s+PiBtX3NjcmVlbnNob3RDYWxsYmFja3M7CiAKLSAgICB1aW50NjRfdCBtX25leHRH
ZXRDb29raWVzQ2FsbGJhY2tJRCB7IDEgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpHZXRBbGxDb29r
aWVzQ2FsbGJhY2s+PiBtX2dldENvb2tpZUNhbGxiYWNrczsKLQotICAgIHVpbnQ2NF90IG1fbmV4
dERlbGV0ZUNvb2tpZUNhbGxiYWNrSUQgeyAxIH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6RGVsZXRl
U2luZ2xlQ29va2llQ2FsbGJhY2s+PiBtX2RlbGV0ZUNvb2tpZUNhbGxiYWNrczsKLQotICAgIHVp
bnQ2NF90IG1fbmV4dFNlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFja0lEIHsgMSB9OwotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0
Y2hlckhhbmRsZXI6OlNlbGVjdE9wdGlvbkVsZW1lbnRDYWxsYmFjaz4+IG1fc2VsZWN0T3B0aW9u
RWxlbWVudENhbGxiYWNrczsKLQogICAgIGVudW0gY2xhc3MgV2luZG93VHJhbnNpdGlvbmVkVG9T
dGF0ZSB7CiAgICAgICAgIEZ1bGxzY3JlZW4sCiAgICAgICAgIFVuZnVsbHNjcmVlbiwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLm1lc3NhZ2VzLmluCmluZGV4IGU5ODliYWFmMjA4NThiNDE1NWU2
NjUxNjcwMTI2NGYzMWJhMjRhNjQuLmYxM2E1OTZhNTc4YzE0Njk5YWY2NDcwZDJhNGY5MzhkZDNh
YmVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5tZXNzYWdlcy5pbgpAQCAtMSw0ICsx
LDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMiwxNiArMjIsNSBAQAogCiBt
ZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvbiB7CiAgICAgRGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIHJlc3VsdCwgU3RyaW5nIGVy
cm9yVHlwZSkKLQotICAgIERpZFJlc29sdmVDaGlsZEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJvclR5cGUpCi0gICAgRGlkUmVzb2x2ZVBhcmVu
dEZyYW1lKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBlcnJv
clR5cGUpCi0KLSAgICBEaWRDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBjYWxsYmFja0lE
LCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZp
ZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkLCBTdHJpbmcgZXJyb3JUeXBlKQotCi0gICAg
RGlkU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBjYWxsYmFja0lELCBTdHJpbmcgZXJyb3JU
eXBlKQotCiAgICAgRGlkVGFrZVNjcmVlbnNob3QodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBpbWFnZURhdGFIYW5kbGUsIFN0cmluZyBlcnJvclR5
cGUpCi0KLSAgICBEaWRHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgY2FsbGJhY2tJRCwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcywgU3RyaW5nIGVycm9yVHlwZSkKLSAgICBEaWRE
ZWxldGVDb29raWUodWludDY0X3QgY2FsbGJhY2tJRCwgU3RyaW5nIGVycm9yVHlwZSkKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggOGE1ZDQxNGMzNDJkMzI4MGUwNmIz
YWNjYmVhNjdkNDU0N2M2MmNiMC4uOWMzMWI4MjliYjVhNDU0ZTAwMDI0M2YxM2RlOGMxOTg3MTNl
Mzc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTMxMiwxMiArMzEy
LDEyIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgcmVzdWx0
LCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5kb3dOb3RG
b3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJv
ck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAsIHdpbmRvd05vdEZv
dW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdpbmRvd05vdEZv
dW5kRXJyb3JUeXBlLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzI1LDM3ICsz
MjUsMzcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKIAogICAgIFdlYkZyYW1lKiBmcmFtZSA9
IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKSA6IHBh
Z2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAs
IGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlm
ICghY29yZUZyYW1lKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBl
KSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUs
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVD
aGlsZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQob3JkaW5hbCk7CiAgICAg
aWYgKCFjb3JlQ2hpbGRGcmFtZSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJy
b3JUeXBlLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkZyYW1lKiBjaGls
ZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKICAgICBp
ZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246
OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5
cGUpLCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlw
ZSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgY2hpbGRGcmFtZS0+
ZnJhbWVJRCgpLCBTdHJpbmcoKSksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVs
bG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRG
cmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBw
YWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICgh
cGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3Vu
ZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlQ2hp
bGRGcmFtZShjYWxsYmFja0lELCAwLCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM2MywzNyArMzYzLDM3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRf
dCBwYWdlSUQsCiAKICAgICBXZWJGcmFtZSogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBl
KSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUs
IDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogY29y
ZUVsZW1lbnQgPSBlbGVtZW50Rm9yTm9kZUhhbmRsZSgqZnJhbWUsIG5vZGVIYW5kbGUpOwogICAg
IGlmICghY29yZUVsZW1lbnQgfHwgIWNvcmVFbGVtZW50LT5pc0ZyYW1lRWxlbWVudEJhc2UoKSkg
ewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUNoaWxk
RnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWVGcm9tRWxlbWVu
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlKj4oY29yZUVsZW1l
bnQpLT5jb250ZW50RnJhbWUoKTsKICAgICBpZiAoIWNvcmVGcmFtZUZyb21FbGVtZW50KSB7Ci0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlQ2hpbGRGcmFt
ZShjYWxsYmFja0lELCAwLCBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgV2ViRnJhbWUqIGZyYW1lRnJvbUVsZW1lbnQgPSBXZWJGcmFtZTo6
ZnJvbUNvcmVGcmFtZSgqY29yZUZyYW1lRnJvbUVsZW1lbnQpOwogICAgIGlmICghZnJhbWVGcm9t
RWxlbWVudCkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVz
b2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDAp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCBmcmFtZUZyb21FbGVtZW50LT5m
cmFtZUlEKCksIFN0cmluZygpKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0LCBmcmFtZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0
aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0
cmluZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQs
IDAsIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNDAxLDM3ICs0MDEsMzcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYKIAogICAgIFdl
YkZyYW1lKiBmcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShmcmFtZUlEKSA6IHBhZ2UtPm1haW5XZWJGcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1l
KGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgMCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gZnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlQ2hpbGRGcmFtZShjYWxsYmFja0lELCAwLCBmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlKSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90
Rm91bmRFcnJvclR5cGUsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViQ29y
ZTo6RnJhbWUqIGNvcmVDaGlsZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQo
bmFtZSk7CiAgICAgaWYgKCFjb3JlQ2hpbGRGcmFtZSkgewotICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwgMCwgZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFt
ZU5vdEZvdW5kRXJyb3JUeXBlLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdl
YkZyYW1lKiBjaGlsZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZy
YW1lKTsKICAgICBpZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21h
dGlvblNlc3Npb246OkRpZFJlc29sdmVDaGlsZEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90
Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2ZUNoaWxkRnJhbWUoY2FsbGJhY2tJRCwg
Y2hpbGRGcmFtZS0+ZnJhbWVJRCgpLCBTdHJpbmcoKSksIDApOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewog
ICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUo
Y2FsbGJhY2tJRCwgMCwgd2luZG93Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIDApOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MzksMTcgKzQzOSwxNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YQogCiAgICAgV2ViRnJhbWUqIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkZyYW1lKGZyYW1lSUQpIDogcGFnZS0+bWFpbldlYkZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkUmVzb2x2
ZVBhcmVudEZyYW1lKGNhbGxiYWNrSUQsIDAsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFt
ZS0+cGFyZW50RnJhbWUoKTsKICAgICBpZiAoIXBhcmVudEZyYW1lKSB7Ci0gICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJhbWUoY2FsbGJhY2tJ
RCwgMCwgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRSZXNvbHZlUGFyZW50RnJh
bWUoY2FsbGJhY2tJRCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSwgU3RyaW5nKCkpLCAwKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFtZUlEKCkp
OwogfQogCiB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQpAQCAtNTM0LDEyICs1MzQsMTIgQEAgc3RhdGlj
IFdlYkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuICZlbGVtZW50OwogfQogCi12b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExh
eW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0
ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3Jl
OjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmluZyB3aW5k
b3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb246OkRpZENvbXB1dGVFbGVtZW50TGF5b3V0KGNhbGxiYWNrSUQsIHsgfSwg
V1RGOjpudWxsb3B0LCBmYWxzZSwgd2luZG93Tm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUsIHsgfSwgV1RGOjpu
dWxsb3B0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU0OSwxMyArNTQ5
LDEzIEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAKICAgICBXZWJGcmFtZSogZnJhbWUgPSBm
cmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkgOiBwYWdl
LT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZyYW1lKCkg
fHwgIWZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0s
IFdURjo6bnVsbG9wdCwgZmFsc2UsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgeyB9LCBXVEY6Om51
bGxvcHQsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkVs
ZW1lbnQqIGNvcmVFbGVtZW50ID0gZWxlbWVudEZvck5vZGVIYW5kbGUoKmZyYW1lLCBub2RlSGFu
ZGxlKTsKICAgICBpZiAoIWNvcmVFbGVtZW50KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uOjpEaWRDb21wdXRlRWxlbWVudExheW91dChjYWxsYmFja0lELCB7IH0sIFdU
Rjo6bnVsbG9wdCwgZmFsc2UsIG5vZGVOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihub2RlTm90Rm91bmRFcnJvclR5cGUsIHsgfSwgV1RGOjpudWxsb3B0
LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYwMCw0MiArNjAwLDQyIEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkQ29tcHV0ZUVsZW1lbnRMYXlvdXQoY2FsbGJhY2tJ
RCwgcmVzdWx0RWxlbWVudEJvdW5kcywgcmVzdWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3Vy
ZWQsIFN0cmluZygpKSwgMCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBy
ZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVu
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCB1
aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxl
Y3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKICAgICAgICAgU3Ry
aW5nIHdpbmRvd05vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkVycm9yTWVzc2FnZTo6V2luZG93Tm90Rm91bmQpOwotICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lE
LCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBXZWJGcmFtZSogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUoZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8
ICFmcmFtZS0+Y29yZUZyYW1lKCkgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpKSB7CiAg
ICAgICAgIFN0cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7Ci0gICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNh
bGxiYWNrSUQsIGZyYW1lTm90Rm91bmRFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBXZWJDb3JlOjpFbGVtZW50KiBjb3JlRWxlbWVudCA9IGVsZW1lbnRGb3JOb2RlSGFu
ZGxlKCpmcmFtZSwgbm9kZUhhbmRsZSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCB8fCAoIWlzPFdl
YkNvcmU6OkhUTUxPcHRpb25FbGVtZW50Pihjb3JlRWxlbWVudCkgJiYgIWlzPFdlYkNvcmU6OkhU
TUxPcHRHcm91cEVsZW1lbnQ+KGNvcmVFbGVtZW50KSkpIHsKICAgICAgICAgU3RyaW5nIG5vZGVO
b3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6Ok5vZGVOb3RGb3VuZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIG5vZGVOb3RGb3Vu
ZEVycm9yVHlwZSksIDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihub2RlTm90Rm91bmRF
cnJvclR5cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgU3RyaW5nIGVsZW1lbnRO
b3RJbnRlcmFjdGFibGVFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6RXJyb3JNZXNzYWdlOjpFbGVtZW50Tm90SW50ZXJhY3RhYmxlKTsKICAgICBpZiAoaXM8
V2ViQ29yZTo6SFRNTE9wdEdyb3VwRWxlbWVudD4oY29yZUVsZW1lbnQpKSB7Ci0gICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxi
YWNrSUQsIGVsZW1lbnROb3RJbnRlcmFjdGFibGVFcnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZWxlbWVudE5vdEludGVyYWN0YWJsZUVycm9yVHlwZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBhdXRvJiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8V2Vi
Q29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ+KCpjb3JlRWxlbWVudCk7CiAgICAgYXV0byogc2VsZWN0
RWxlbWVudCA9IG9wdGlvbkVsZW1lbnQub3duZXJTZWxlY3RFbGVtZW50KCk7CiAgICAgaWYgKCFz
ZWxlY3RFbGVtZW50KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRTZWxlY3RPcHRpb25FbGVtZW50KGNhbGxiYWNrSUQsIGVsZW1lbnROb3RJbnRlcmFjdGFibGVF
cnJvclR5cGUpLCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZWxlbWVudE5vdEludGVy
YWN0YWJsZUVycm9yVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY0NCw3ICs2
NDQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1l
bnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcgogICAgICAgICAvLyBvcHRpb25TZWxlY3Rl
ZEJ5VXNlcigpIHdpbGwgZmlyZSBpbnB1dCBhbmQgY2hhbmdlIGV2ZW50cyBpZiBuZWVkZWQsIGJ1
dCBhbGwgb3RoZXIgZXZlbnRzIHNob3VsZCBiZSBmaXJlZCBtYW51YWxseSBoZXJlLgogICAgICAg
ICBzZWxlY3RFbGVtZW50LT5vcHRpb25TZWxlY3RlZEJ5VXNlcihvcHRpb25FbGVtZW50LmluZGV4
KCksIHRydWUsIHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkpOwogICAgIH0KLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkU2VsZWN0T3B0aW9uRWxlbWVudChjYWxsYmFja0lE
LCB7IH0pLCAwKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOwogfQogCiBz
dGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90KFdlYlBhZ2Um
IHBhZ2UsIFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgY2xpcFRvVmlld3BvcnQpCkBA
IC03MTksMTkgKzcxOSwxOSBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VT
Y3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5k
bGUsIHsgfSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENv
b2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CiAgICAgICAgIFN0cmlu
ZyB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRv
bWF0aW9uOjpFcnJvck1lc3NhZ2U6OldpbmRvd05vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEdldENvb2tpZXNGb3JGcmFtZShjYWxsYmFja0lELCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPigpLCB3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSksIDApOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3aW5kb3dOb3RGb3VuZEVycm9yVHlwZSwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBXZWJG
cmFtZSogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
ZnJhbWVJRCkgOiBwYWdlLT5tYWluV2ViRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+Y29yZUZyYW1lKCkgfHwgIWZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKSkgewogICAg
ICAgICBTdHJpbmcgZnJhbWVOb3RGb3VuZEVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkZyYW1lTm90Rm91bmQpOwotICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkR2V0Q29va2llc0ZvckZyYW1lKGNhbGxi
YWNrSUQsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KCksIGZyYW1lTm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc0MSwyOSArNzQxLDI5IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29v
a2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgaWYgKCFkb2N1
bWVudC5jb29raWVVUkwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHBhZ2UtPmNvcmVQYWdlKCktPmNv
b2tpZUphcigpLmdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIGRvY3VtZW50LmNvb2tpZVVSTCgpLCBm
b3VuZENvb2tpZXMpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEdl
dENvb2tpZXNGb3JGcmFtZShjYWxsYmFja0lELCBmb3VuZENvb2tpZXMsIFN0cmluZygpKSwgMCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQog
Ci12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCB1aW50NjRfdCBjYWxs
YmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkgewogICAgICAgICBTdHJpbmcgd2luZG93Tm90Rm91bmRF
cnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51
bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNz
YWdlOjpXaW5kb3dOb3RGb3VuZCk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWREZWxldGVDb29raWUoY2FsbGJhY2tJRCwgd2luZG93Tm90Rm91bmRFcnJvclR5cGUp
LCAwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2luZG93Tm90Rm91bmRFcnJvclR5cGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgV2ViRnJhbWUqIGZyYW1lID0gZnJhbWVJ
RCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpIDogcGFnZS0+bWFp
bldlYkZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICFm
cmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkpIHsKICAgICAgICAgU3RyaW5nIGZyYW1lTm90
Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJy
b3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZERlbGV0ZUNvb2tpZShjYWxsYmFja0lELCBmcmFtZU5vdEZvdW5kRXJyb3JU
eXBlKSwgMCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5
cGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIHBhZ2UtPmNvcmVQYWdlKCktPmNvb2tp
ZUphcigpLmRlbGV0ZUNvb2tpZShkb2N1bWVudCwgZG9jdW1lbnQuY29va2llVVJMKCksIGNvb2tp
ZU5hbWUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZERlbGV0ZUNv
b2tpZShjYWxsYmFja0lELCBTdHJpbmcoKSksIDApOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oCmluZGV4IDc1NjBmMDY5NTcxZmM4YzQwMWZjNTlhYjIxNDk3MDA1MTViZTk1
Y2UuLjYyOTU0MWQyMGJhMTBkZjYyZGExZTI2MDkxNjRlYWM4OTJiYTBkMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOwogY2xhc3Mg
RWxlbWVudDsKIH0KIApAQCAtNjAsMTYgKzYxLDE2IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWxs
ZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwogICAgIHZvaWQgZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhw
ZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgdWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxl
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFu
ZGxlLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0
aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5h
bWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJh
bWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAg
IHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OwogICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQp
OwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVk
LCBDb29yZGluYXRlU3lzdGVtLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHNlbGVj
dE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBjb21wdXRlRWxlbWVu
dExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7CisgICAgdm9pZCBzZWxlY3RPcHRp
b25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogICAg
IHZvaWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBU
b1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXNGb3JG
cmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJj
MTNhNjZkNmIyMTJkMWM4OWQ4YmJlZDQ4ODA0MGRjOWNkODU4YjQuLmFhMTIxOWUyZWYxZmMwNzAw
NDU5NmQyNGExYjU3MTZkMzA2Zjc4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywxOSArMjMsMTkgQEAKIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkgewogICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1
bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNr
VGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0
aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRp
bmFsLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3Jk
aW5hbCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBB
c3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZy
YW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbmFt
ZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3lu
YworICAgIFJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5
bmMKIAogICAgIEZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQog
Ci0gICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVj
dCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJv
b2wgaXNPYnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSkgQXN5bmMKIAogICAgIFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENv
b2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCi0gICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgR2V0
Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9w
dGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
KSBBc3luYworICAgIERlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBjb29raWVOYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFz
eW5jCiB9Cg==
</data>
<flag name="review"
          id="382310"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>