<?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>192668</bug_id>
          
          <creation_ts>2018-12-13 10:09:37 -0800</creation_ts>
          <short_desc>[PSON] We should not need to navigate to &apos;about:blank&apos; to suspend pages</short_desc>
          <delta_ts>2019-01-07 16:52:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          <dependson>192772</dependson>
    
    <dependson>193224</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487618</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-13 10:09:37 -0800</bug_when>
    <thetext>We should not need to navigate to &apos;about:blank&apos; to suspend pages to support PageCache when PSON is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487622</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-13 10:35:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/46701466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487624</commentid>
    <comment_count>2</comment_count>
      <attachid>357238</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-13 10:54:45 -0800</bug_when>
    <thetext>Created attachment 357238
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487625</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-13 10:56:46 -0800</bug_when>
    <thetext>Attachment 357238 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/WebPage/WebDocumentLoader.cpp:53:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.cpp:1333:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487659</commentid>
    <comment_count>4</comment_count>
      <attachid>357244</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-13 12:33:32 -0800</bug_when>
    <thetext>Created attachment 357244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487698</commentid>
    <comment_count>5</comment_count>
      <attachid>357251</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-13 13:58:00 -0800</bug_when>
    <thetext>Created attachment 357251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487738</commentid>
    <comment_count>6</comment_count>
      <attachid>357251</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 15:17:53 -0800</bug_when>
    <thetext>Comment on attachment 357251
Patch

Clearing flags on attachment: 357251

Committed r239182: &lt;https://trac.webkit.org/changeset/239182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487739</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-13 15:17:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487889</commentid>
    <comment_count>8</comment_count>
      <attachid>357251</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-14 05:18:33 -0800</bug_when>
    <thetext>Comment on attachment 357251
Patch

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

Nice!

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:-739
&gt; -    if (request.url() == WTF::blankURL() &amp;&amp; webPage-&gt;isSuspended()) {

Does isSuspended bit on WebPage have any clients after this? Maybe it is not even needed anymore?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1331
&gt; +    if (!PageCache::singleton().addIfCacheable(*currentHistoryItem, corePage())) {
&gt; +        failedToSuspend();
&gt; +        return;
&gt; +    }

So this leaves us in a new type of state where we the current page is moved to page cache but we haven&apos;t navigated anywhere. I suppose that is ok.

Does failedToSuspend() throws away the process? Could we just close the page when caching fails but keep the process around (since it has useful caches etc for back navigation)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487921</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-14 08:43:23 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #8)
&gt; Comment on attachment 357251 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357251&amp;action=review
&gt; 
&gt; Nice!
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:-739
&gt; &gt; -    if (request.url() == WTF::blankURL() &amp;&amp; webPage-&gt;isSuspended()) {
&gt; 
&gt; Does isSuspended bit on WebPage have any clients after this? Maybe it is not
&gt; even needed anymore?

There is still one call site:
bool WebProcess::hasPageRequiringPageCacheWhileSuspended() const
{
    for (auto&amp; page : m_pageMap.values()) {
        if (page-&gt;isSuspended())
            return true;
    }
    return false;
}

We need to know a page is suspended for process-swap when the process actually gets suspended on iOS to avoid clearing the PageCache.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:1331
&gt; &gt; +    if (!PageCache::singleton().addIfCacheable(*currentHistoryItem, corePage())) {
&gt; &gt; +        failedToSuspend();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; So this leaves us in a new type of state where we the current page is moved
&gt; to page cache but we haven&apos;t navigated anywhere. I suppose that is ok.

Yes, it is kind of a new state but it seems to work OK, and navigating to the current history item works fine too and restores it from PageCache.

&gt; 
&gt; Does failedToSuspend() throws away the process? Could we just close the page
&gt; when caching fails but keep the process around (since it has useful caches
&gt; etc for back navigation)?

Yes, I am not keeping the process around anymore if page cache fails. I have discussed this with Brady and Geoff as well.
If it turns out to be an issue, then we can do better and cache processes. It is not quite as easy as it sounds though because
if you re-attach to a process that used to have a WebPage with your ID, you may get leftover IPC from the previous page when
you reconnect and it would trigger MESSAGE_CHECK failures in the UIProcess. So we&apos;d still need some kind of handshake like
Close -&gt; DoneClosing before we would be able to reuse the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487992</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-12-14 12:08:51 -0800</bug_when>
    <thetext>&gt; Yes, I am not keeping the process around anymore if page cache fails. I have
&gt; discussed this with Brady and Geoff as well.
&gt; If it turns out to be an issue, then we can do better and cache processes.
&gt; It is not quite as easy as it sounds though because
&gt; if you re-attach to a process that used to have a WebPage with your ID, you
&gt; may get leftover IPC from the previous page when
&gt; you reconnect and it would trigger MESSAGE_CHECK failures in the UIProcess.
&gt; So we&apos;d still need some kind of handshake like
&gt; Close -&gt; DoneClosing before we would be able to reuse the process.

Makes sense. A suspended page is always in this specific page cache-like state. A hypothetical per-domain process cache would handle other cases.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357238</attachid>
            <date>2018-12-13 10:54:45 -0800</date>
            <delta_ts>2018-12-13 12:33:31 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>192668_PSON_page_suspension_wip.patch</filename>
            <type>text/plain</type>
            <size>16699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAzY2Y4MzZjZWQyZS4uZjEzZTVh
OGU4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTQyNSwxMyArNDI1
LDEzIEBAIHN0YXRpYyB2b2lkIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJzaXZlbHkoRnJhbWUmIGZy
YW1lKQogICAgICAgICBmaXJlUGFnZUhpZGVFdmVudFJlY3Vyc2l2ZWx5KCpjaGlsZCk7CiB9CiAK
LXZvaWQgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSog
cGFnZSkKK2Jvb2wgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwg
UGFnZSogcGFnZSkKIHsKICAgICBpZiAoaXRlbS5pc0luUGFnZUNhY2hlKCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFwYWdlIHx8ICFjYW5DYWNo
ZSgqcGFnZSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghcGFnZS0+aXNVdGlsaXR5UGFnZSgpLCAiVXRpbGl0eSBwYWdl
cyBzdWNoIGFzIFNWR0ltYWdlIHBhZ2VzIHNob3VsZCBuZXZlciBnbyBpbnRvIFBhZ2VDYWNoZSIp
OwogCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhp
c3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIC8vIGNvdWxkIGhhdmUgYWx0ZXJlZCB0
aGUgcGFnZSBpbiBhIHdheSB0aGF0IGNvdWxkIHByZXZlbnQgY2FjaGluZy4KICAgICBpZiAoIWNh
bkNhY2hlKCpwYWdlKSkgewogICAgICAgICBzZXRQYWdlQ2FjaGVTdGF0ZSgqcGFnZSwgRG9jdW1l
bnQ6Ok5vdEluUGFnZUNhY2hlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZGVzdHJveVJlbmRlclRyZWUocGFnZS0+bWFpbkZyYW1lKCkpOwpA
QCAtNDY1LDYgKzQ2NSw3IEBAIHZvaWQgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5
SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAgICAgbV9pdGVtcy5hZGQoJml0ZW0pOwogICAg
IH0KICAgICBwcnVuZShQcnVuaW5nUmVhc29uOjpSZWFjaGVkTWF4U2l6ZSk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiBQYWdlQ2FjaGU6OnRha2Uo
SGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
aAppbmRleCBhNjJkZjlhYzg1Ny4uZTIxMWNjNDU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvUGFnZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRNYXhTaXplKHVuc2lnbmVkKTsgLy8gbnVtYmVyIG9mIHBhZ2VzIHRvIGNhY2hlLgogICAg
IHVuc2lnbmVkIG1heFNpemUoKSBjb25zdCB7IHJldHVybiBtX21heFNpemU7IH0KIAotICAgIHZv
aWQgYWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mLCBQYWdlKik7IC8vIFBydW5lcyBpZiBtYXhT
aXplKCkgaXMgZXhjZWVkZWQuCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRJZkNhY2hlYWJs
ZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlmIG1heFNpemUoKSBpcyBleGNlZWRl
ZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShIaXN0b3J5SXRlbSYpOwogICAgIENh
Y2hlZFBhZ2UqIGdldChIaXN0b3J5SXRlbSYsIFBhZ2UqKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q2FjaGVkUGFnZT4gdGFrZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGY2ZmZiMTNmZjU5Li42ZDk5MTQ2ZjlhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02MjgsMTYgKzYyOCwx
MiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogCiAgICAgc2V0UmVxdWVzdChuZXdSZXF1ZXN0
KTsKIAotICAgIGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgc2hvdWxkQ29udGlu
dWUgIT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pCisgICAgaWYgKCFkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUobmV3UmVxdWVzdCkpOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhh
bmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgV2Vha1B0cjxGb3JtU3RhdGU+JiYsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRp
bnVlKSBtdXRhYmxlIHsKICAgICAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IGZh
bHNlOwogICAgICAgICBzd2l0Y2ggKHNob3VsZENvbnRpbnVlKSB7Ci0gICAgICAgIGNhc2UgU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb246Ci0gICAgICAgICAgICAvLyBXZSBoYW5kbGUgc3Vz
cGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdoaWNoIGxlYXZl
cyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KLSAgICAgICAgICAgIHJlcXVl
c3QgPSB7IFdURjo6YmxhbmtVUkwoKSB9OwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU2hvdWxkQ29udGludWU6Ok5vOgogICAgICAgICAgICAgc3RvcExvYWRpbmdGb3JQb2xpY3lD
aGFuZ2UoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjUxLDExICs2NDcsNiBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCwgY29uc3QgUmVzb3VyYwogICAgIEFTU0VSVCghbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGlj
eSk7CiAgICAgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSA9IHRydWU7CiAKLSAgICBpZiAo
c2hvdWxkQ29udGludWUgPT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pIHsKLSAgICAg
ICAgbmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCks
IG51bGxwdHIsIHNob3VsZENvbnRpbnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IGZyYW1lTG9hZGVyKCktPnBvbGljeUNoZWNrZXIoKS5jaGVja05hdmlnYXRpb25Qb2xpY3koV1RG
TW92ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShuYXZpZ2F0aW9uUG9s
aWN5Q29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggODMzNjUyMmE2MTAuLmEzMzM5MDRiMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKQEAgLTE3NzIsNyArMTc3Miw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChPcHRpb25TZXQ8UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zp
c2lvbmFsSXRlbVBvbGljeSkKIHsKLSAgICBBU1NFUlQoIW1fZnJhbWUuZG9jdW1lbnQoKSB8fCBt
X2ZyYW1lLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6OkluUGFnZUNh
Y2hlKTsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+
cGFnZUNhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6SW5QYWdlQ2FjaGUpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmICghaXNTdG9wTG9hZGluZ0FsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xODY2LDYgKzE4NjgsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRl
cihEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVyICYmICFtX2RvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm47CisKKyAgICBpZiAobG9hZGVyID09IG1fZG9jdW1l
bnRMb2FkZXIpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICBBU1NFUlQobG9hZGVyICE9IG1f
ZG9jdW1lbnRMb2FkZXIpOwogICAgIEFTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2Fk
ZXIoKSA9PSB0aGlzKTsKQEAgLTE5NTMsNyArMTk1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAKICAgICB3aWxsVHJhbnNpdGlvblRvQ29tbWl0dGVkKCk7
CiAKLSAgICBpZiAoIW1fZnJhbWUudHJlZSgpLnBhcmVudCgpICYmIGhpc3RvcnkoKS5jdXJyZW50
SXRlbSgpKSB7CisgICAgaWYgKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSAmJiBoaXN0b3J5KCku
Y3VycmVudEl0ZW0oKSAmJiBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSAhPSBoaXN0b3J5KCkucHJv
dmlzaW9uYWxJdGVtKCkpIHsKICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8g
Y2FjaGUgdGhlIHBhZ2Ugd2UgYXJlIG5hdmlnYXRpbmcgYXdheSBmcm9tIGludG8gdGhlIGJhY2sv
Zm9yd2FyZCBjYWNoZS4KICAgICAgICAgLy8gV2UgYXJlIGRvaW5nIHRoaXMgaGVyZSBiZWNhdXNl
IHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdlIGlzIGFib3V0IHRvIGJlIGxvYWRlZC4K
ICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJZkNhY2hlYWJsZSgqaGlzdG9yeSgp
LmN1cnJlbnRJdGVtKCksIG1fZnJhbWUucGFnZSgpKTsKQEAgLTMzNjksMTUgKzMzNzQsNiBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2xvYWRp
bmdGcm9tQ2FjaGVkUGFnZSA9IGZhbHNlOwogCi0gICAgICAgICAgICAvLyBXZSBoYW5kbGUgc3Vz
cGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdoaWNoIGxlYXZl
cyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KLSAgICAgICAgICAgIGlmIChz
aG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikgewotICAgICAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBhIHN0YW5kYXJkIGxvYWQgdG8gYWJvdXQ6Ymxh
bmsgaW5zdGVhZCBvZiByZXVzaW5nIHdoYXRldmVyIHRoZSBsb2FkIHR5cGUgd2FzIG9uIHByb2Nl
c3Mgc3dhcC4KLSAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgdXNpbmcgYSBCYWNrL0Zv
cndhcmQgbG9hZCB0byBsb2FkIGFib3V0IGJsYW5rIHdvdWxkIGNhdXNlIHRoZSBjdXJyZW50IEhp
c3RvcnlJdGVtJ3MgdXJsIHRvIGJlCi0gICAgICAgICAgICAgICAgLy8gb3ZlcndyaXR0ZW4gd2l0
aCAnYWJvdXQ6YmxhbmsnLCB3aGljaCB3ZSBkbyBub3Qgd2FudC4KLSAgICAgICAgICAgICAgICBt
X2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Ci0gICAgICAgICAgICAgICAgbV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3VyY2VMb2FkQWZ0
ZXJSZWRpcmVjdCh7IFdURjo6YmxhbmtVUkwoKSB9KTsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3Vy
Y2Uoc2hvdWxkQ29udGludWUpOwogICAgICAgICB9KTsKICAgICB9OwpAQCAtMzM5Myw3ICszMzg5
LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
TG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwK
ICAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUs
IEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkws
IE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGljeSkKIHsKLSAgICBBU1NFUlQoc2hvdWxk
Q29udGludWUgIT0gU2hvdWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pOwogICAgIGlmIChzaG91
bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6WWVzKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCmluZGV4IGE1YTFmN2ZlYmU3Li5h
M2QwZjI0MmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBA
IC00NCw3ICs0NCw3IEBAIGVudW0gY2xhc3MgUG9saWN5QWN0aW9uIDogdWludDhfdCB7CiAgICAg
VXNlLAogICAgIERvd25sb2FkLAogICAgIElnbm9yZSwKLSAgICBTdXNwZW5kLAorICAgIFN1c3Bl
bmQsIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgdXNlZCBieSBXZWJLaXQyIHNvIHdlIHNob3VsZG4n
dCBuZWVkIHRoaXMgaW4gdGhlIFdlYkNvcmUgZW51bS4KIH07CiAKIGVudW0gY2xhc3MgUmVsb2Fk
T3B0aW9uIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
aW5kZXggYjlmMmM1Mzk5M2UuLjNiNmQxMGEzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVz
b3UKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsg
V1RGOjpibGFua1VSTCgpIH0sIG51bGxwdHIsIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9u
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNh
c2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGhh
bmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5v
dFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAppbmRleCAyMDcxZmZhYjE3NC4uZDdmZDdiM2ZiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuaApAQCAtNTQsOCArNTQsNyBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
CiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlIHsKICAgICBZZXMsCi0gICAgTm8sCi0gICAgRm9y
U3VzcGVuc2lvbgorICAgIE5vCiB9OwogCiBlbnVtIGNsYXNzIFBvbGljeURlY2lzaW9uTW9kZSB7
IFN5bmNocm9ub3VzLCBBc3luY2hyb25vdXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IGNhNWFlZWY0MGI2Li43ZWQyMjM4MDQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC0xMzAsMTQgKzEzMCwxMiBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKGZh
bHNlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWQoKQordm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFN1c3BlbmQoKQogewog
ICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJTdXNwZW5kZWRQYWdlUHJveHkgJXMgZnJvbSBwcm9j
ZXNzICVpIGZpbmlzaGVkIHRyYW5zaXRpb24gdG8gc3VzcGVuZGVkIiwgbG9nZ2luZ1N0cmluZygp
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogCiAgICAgbV9maW5pc2hlZFN1c3Bl
bmRpbmcgPSB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpVcGRhdGVBY3RpdmVQYWdlcygpLCAwKTsKLQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgbV9zdXNwZW5zaW9uVG9rZW4gPSBudWxscHRyOwogI2VuZGlmCkBAIC0xNTksOCArMTU3LDgg
QEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYgZGVjb2QKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKIAotICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluaXNoTG9hZEZvckZyYW1lOjpuYW1lKCkpIHsKLSAgICAgICAgZGlk
RmluaXNoTG9hZCgpOworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXA6Om5hbWUoKSkgeworICAg
ICAgICBkaWRTdXNwZW5kKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMTEzYmQ1MWU3NGIuLmI2
NjFmNTJhODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAgICB2b2lkIGRpZFN1c3BlbmQoKTsKICAgICB2b2lkIGRp
ZEZhaWxUb1N1c3BlbmQoKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmYmJjODc1ZTM2OS4uNTg0ZmNi
YWM1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjc2
NSw2ICsyNzY1LDEyIEBAIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsVG9TdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpCit7CisgICAgLy8gT25seSB0aGUgU3VzcGVuZGVk
UGFnZVByb3h5IHNob3VsZCBiZSBnZXR0aW5nIHRoaXMgY2FsbC4KKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1
c2VyQWdlbnQpCiB7CiAgICAgaWYgKG1fdXNlckFnZW50ID09IHVzZXJBZ2VudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTMyZTgzMWY1OWIuLmIxMjk5Yjc3ZDUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTU2Nyw2ICsxNTY3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYXR0YWNoVG9XZWJQcm9jZXNzKCk7CiAgICAgdm9p
ZCBzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYsIFNob3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWEp
OwogICAgIHZvaWQgZGlkRmFpbFRvU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXAoKTsKKyAgICB2b2lk
IGRpZFN1c3BlbmRBZnRlclByb2Nlc3NTd2FwKCk7CiAKICAgICB2b2lkIGZpbmlzaEF0dGFjaGlu
Z1RvV2ViUHJvY2VzcyhTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhID0gU2hvdWxkRGVs
YXlBdHRhY2hpbmdEcmF3aW5nQXJlYTo6Tm8pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZjdiNDNhZGViZTUuLmU2ZTk0ZmU5
YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCkBAIC01MDUsNiArNTA1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNl
bmRpZgogCiAgICAgRGlkRmFpbFRvU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXAoKQorICAgIERpZFN1
c3BlbmRBZnRlclByb2Nlc3NTd2FwKCkKIAogICAgIEltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNo
YW5nZWQoV2ViQ29yZTo6SW50U2l6ZSBuZXdTaXplKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCAzZTZmMzFhNTllYy4uM2ZkZjFlNGY1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtNzM1LDEyICs3MzUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRm9yIHN1c3BlbnNpb24gbG9h
ZHMgdG8gYWJvdXQ6YmxhbmssIG5vIG5lZWQgdG8gYXNrIHRoZSBTdXNwZW5kZWRQYWdlUHJveHku
Ci0gICAgaWYgKHJlcXVlc3QudXJsKCkgPT0gV1RGOjpibGFua1VSTCgpICYmIHdlYlBhZ2UtPmlz
U3VzcGVuZGVkKCkpIHsKLSAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0MDcy
MmM4NjJmZS4uNzA2YjM3OGQ1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9p
ZCBXZWJEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKIHZvaWQgV2ViRG9jdW1lbnRM
b2FkZXI6OnNldE5hdmlnYXRpb25JRCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgQVNT
RVJUKG5hdmlnYXRpb25JRCk7Ci0gICAgQVNTRVJUKCFtX25hdmlnYXRpb25JRCB8fCBtX25hdmln
YXRpb25JRCA9PSBuYXZpZ2F0aW9uSUQpOworICAgIC8vQVNTRVJUKCFtX25hdmlnYXRpb25JRCB8
fCBtX25hdmlnYXRpb25JRCA9PSBuYXZpZ2F0aW9uSUQpOwogCiAgICAgbV9uYXZpZ2F0aW9uSUQg
PSBuYXZpZ2F0aW9uSUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggOWFlMzc4YjI4OGMuLjM5NTc1MzUxMDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0yNzUsNyArMjc1LDE2
IEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0
ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uCiAgICAgICAgICAgICBkb2N1bWVudExvYWRlci0+
c2V0TmF2aWdhdGlvbklEKG5hdmlnYXRpb25JRCk7CiAgICAgfQogCisgICAgYm9vbCBzaG91bGRT
dXNwZW5kID0gZmFsc2U7CisgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlN1c3BlbmQp
IHsKKyAgICAgICAgc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAgICAgIGFjdGlvbiA9IFBvbGlj
eUFjdGlvbjo6SWdub3JlOworICAgIH0KKwogICAgIGZ1bmN0aW9uKGFjdGlvbik7CisKKyAgICBp
ZiAoc2hvdWxkU3VzcGVuZCkKKyAgICAgICAgcGFnZSgpLT5zdXNwZW5kRm9yUHJvY2Vzc1N3YXAo
KTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTlhMDY5YzU1
YzcuLjVjMTQwNWI2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTg0LDYgKzE4NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGluZ0xvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CkBAIC0xMzEx
LDYgKzEzMTIsMjcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6
c3VzcGVuZEZvclByb2Nlc3NTd2FwKCkKK3sKKyAgICBhdXRvIGZhaWxlZFRvU3VzcGVuZCA9IFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgY2xvc2UoKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsVG9TdXNwZW5kQWZ0
ZXJQcm9jZXNzU3dhcCgpKTsKKyAgICB9OworCisgICAgYXV0byogY3VycmVudEhpc3RvcnlJdGVt
ID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0
ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRIaXN0b3J5SXRlbSkgeworICAgICAgICBmYWlsZWRUb1N1
c3BlbmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5hZGRJZkNhY2hlYWJsZSgqY3VycmVudEhpc3RvcnlJdGVtLCBjb3JlUGFnZSgp
KSkgeworICAgICAgICBmYWlsZWRUb1N1c3BlbmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN1c3BlbmRBZnRlclByb2Nl
c3NTd2FwKCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKFVSTCYmIHVybCwg
dWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkNGE5YjdkNDljZC4uNmVlYTNiMGM0YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ1MCw2ICs0NTAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck1haW5GcmFtZU5hbWUoKTsKICAgICB2b2lkIHNlbmRD
bG9zZSgpOwogCisgICAgdm9pZCBzdXNwZW5kRm9yUHJvY2Vzc1N3YXAoKTsKKwogICAgIHZvaWQg
c2VuZFNldFdpbmRvd0ZyYW1lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogCiAgICAgZG91
YmxlIHRleHRab29tRmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBiZGFlNzQ2ZDVkNC4uMmYyNDk2YmY0
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQpAQCAtNDYwLDE0ICs0NjAsNiBAQCBzdGF0aWMgTlNVUkwgKm9yaWdpbihXZWJQYWdl
JiBwYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgVVJMIG1haW5GcmFtZVVSTCA9IHsg
VVJMKCksIG1haW5GcmFtZS0+dXJsKCkgfTsKLSAgICBpZiAocGFnZS5pc1N1c3BlbmRlZCgpKSB7
Ci0gICAgICAgIC8vIFN1c3BlbmRlZCBwYWdlIGFyZSBuYXZpZ2F0ZWQgdG8gYWJvdXQ6Ymxhbmsg
dXBvbiBzdXNwZW5zaW9uIHNvIHdlIHJlYWxseSB3YW50IHRvIHJlcG9ydCB0aGUgcHJldmlvdXMg
VVJMLgotICAgICAgICBpZiAoYXV0byogY29yZUZyYW1lID0gbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tIaXN0b3J5SXRlbSA9IGNvcmVGcmFtZS0+
bG9hZGVyKCkuaGlzdG9yeSgpLnByZXZpb3VzSXRlbSgpKQotICAgICAgICAgICAgICAgIG1haW5G
cmFtZVVSTCA9IHsgVVJMKCksIGJhY2tIaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkgfTsKLSAgICAg
ICAgfQotICAgIH0KLQogICAgIFJlZjxTZWN1cml0eU9yaWdpbj4gbWFpbkZyYW1lT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOwogICAgIFN0cmluZyBtYWluRnJh
bWVPcmlnaW5TdHJpbmc7CiAgICAgaWYgKCFtYWluRnJhbWVPcmlnaW4tPmlzVW5pcXVlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357244</attachid>
            <date>2018-12-13 12:33:32 -0800</date>
            <delta_ts>2018-12-13 13:57:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192668-20181213123332.patch</filename>
            <type>text/plain</type>
            <size>28361</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdjMzMzYmJjNDkxZTIz
NjUzMjgxMzMzNGQwZjQxYTUzMWI3NTA3NS4uNmZkMjUxNDUyZjEyMGNjZTk2MTE4ZGY5NzE2Yjc0
NDAzMTUxNzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTEyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIFdlIHNob3VsZCBu
b3QgbmVlZCB0byBuYXZpZ2F0ZSB0byAnYWJvdXQ6YmxhbmsnIHRvIHN1c3BlbmQgcGFnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY2OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDY3MDE0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKiBoaXN0b3J5
L1BhZ2VDYWNoZS5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6aW5pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNldERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3kpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZp
Z2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorCiAyMDE4
LTEyLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNZWRpYVN0cmVhbV0gQ2FsY3VsYXRlIHdpZHRoIG9yIGhlaWdodCB3aGVuIGNvbnN0cmFpbnRz
IGNvbnRhaW4gb25seSB0aGUgb3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzlhNDI3Mzk3YzFmZmQzYjE0MzM3
NTkwODhmMzA4NGM3ZTgyNWJhMy4uODdkZDQ2NTkwNzE1YmI5OGM3NTM1OWI1Y2JkMjg5YzM3MGFj
ZDI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxOC0xMi0xMyAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtQU09OXSBXZSBzaG91bGQgbm90IG5lZWQg
dG8gbmF2aWdhdGUgdG8gJ2Fib3V0OmJsYW5rJyB0byBzdXNwZW5kIHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI2NjgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ2NzAxNDY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRvIHN1cHBvcnQgUGFnZUNhY2hlIHdoZW4gcHJvY2Vzcy1zd2FwIG9u
IGNyb3NzLXNpdGUgbmF2aWdhdGlvbiBpcyBlbmFibGVkLAorICAgICAgICB3ZSd2ZSBiZWVuIG5h
dmlnYXRpbmcgdGhlIHByZXZpb3VzIHByb2Nlc3MgdG8gJ2Fib3V0OmJsYW5rJyB3aGVuIHN3YXBw
aW5nLgorICAgICAgICBUaGlzIHdvdWxkIHRyaWdnZXIgUGFnZUNhY2hpbmcgb2YgdGhlIHBhZ2Ug
aW4gdGhlIG9sZCBwcm9jZXNzLiBXaGlsZQorICAgICAgICBjb252ZW5pZW50LCB0aGlzIGRlc2ln
biBoYXMgbGVkIHRvIGEgbG90IG9mIGJ1Z3MgYmVjYXVzZSB3ZSBkaWQgbm90IHJlYWxseQorICAg
ICAgICB3YW50IGEgbmF2aWdhdGlvbiB0byBoYXBwZW4gaW4gdGhlIG9sZCBwcm9jZXNzLgorCisg
ICAgICAgIFRvIGFkZHJlc3MgdGhlIGlzc3VlLCB3aGVuIGEgV2ViUGFnZSBpcyBhc2tlZCB0byBz
dXNwZW5kIChmb3IgcHJvY2Vzcy1zd2FwKSwKKyAgICAgICAgd2Ugbm93IGF0dGVtcHQgdG8gYWRk
IGl0IHRvIFBhZ2VDYWNoZSBhbmQgc2F2ZSBpdCBvbiB0aGUgY3VycmVudCBIaXN0b3J5SXRlbSwK
KyAgICAgICAgKndpdGhvdXQqIHRyaWdnZXJpbmcgYW55IG5hdmlnYXRpb24uIEFueSBwZW5kaW5n
IG5hdmlnYXRpb24gZ2V0cyBjYW5jZWxsZWQKKyAgICAgICAgYW5kIHdlIGp1c3Qgc3VzcGVuZCBp
biBwbGFjZS4KKworICAgICAgICBMYXRlciBvbiwgd2hlbiB3ZSB3YW50IHRvIGdvIGJhY2sgdG8g
dGhpcyBIaXN0b3J5SXRlbSwgd2Ugc2ltcGx5IGxldmVyYWdlIHRoZQorICAgICAgICBleGlzdGlu
ZyBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKCkgY29kZSBwYXRoLiBUaGUgb25seSBzdWJ0
bGV0eSBpcyB0aGF0CisgICAgICAgIHdlJ3JlIGFjdHVhbGx5IGFza2luZyB0aGUgV2ViUGFnZSB0
byBsb2FkIGEgSGlzdG9yeUl0ZW0gdGhhdCBpcyB0aGUgY3VycmVudAorICAgICAgICBvbmUgaW4g
dGhlIEhpc3RvcnkuIEkgaGFkIHRvIHR3ZWFrIGEgc29tZSBsb2dpYyAvIGFzc2VydGlvbnMgdG8g
c3VwcG9ydCB0aGlzCisgICAgICAgIGFzIHRoaXMgaXMgbm90IHNvbWV0aGluZyB3ZSB1c3VhbGx5
IGRvLiBIb3dldmVyLCBpdCBhY3R1YWxseSB3b3JrcyB3aXRoIHZlcnkKKyAgICAgICAgbGl0dGxl
IGNoYW5nZXMgYW5kIHN1Y2Nlc3NmdWxseSByZXN0b3JlcyB0aGUgUGFnZUNhY2hlIGVudHJ5IG9u
IHRoZSBjdXJyZW50CisgICAgICAgIEhpc3RvcnlJdGVtLgorCisgICAgICAgIFRoZXJlIGlzIG5v
IGV4cGVjdGVkIG92ZXJhbGwgYmVoYXZpb3IgY2hhbmdlIGFuZCBQcm9jZXNzU3dhcCBBUEkgdGVz
dHMgKHdoaWNoCisgICAgICAgIGNvdmVyIFBhZ2VDYWNoZSkgc3RpbGwgcGFzcy4gVGhpcyBpcyBt
ZXJlbHkgYSBzaW1wbGVyIGRlc2lnbiBiZWNhdXNlIGl0IGF2b2lkcworICAgICAgICBuYXZpZ2F0
aW5nIHRvIGFib3V0OmJsYW5rLgorCisgICAgICAgICogVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkU3VzcGVu
ZCk6CisgICAgICAgIChXZWJLaXQ6OlN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRTdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudExvYWRl
cjo6c2V0TmF2aWdhdGlvbklEKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmRGb3JQcm9jZXNzU3dhcCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6b3JpZ2luKToKKwogMjAxOC0xMi0x
MyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09T
XSBSZW1vdmUgd2l0aC1yZXBvcnQgZnJvbSAzIHNlcnZpY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBu
ZWVkZWQgb24gbWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAppbmRleCAzY2Y4
MzZjZWQyZWE5MDZlYzllNDQ3NzI3MTI5YzA3YTQ0YTllYmJmLi5mMTNlNWE4ZThiMmNiNzcxMDcw
ZjIyNGFjZjU4YmViNGIyNGJkYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CkBAIC00MjUsMTMgKzQyNSwxMyBAQCBzdGF0aWMgdm9pZCBmaXJlUGFnZUhpZGVFdmVudFJlY3Vy
c2l2ZWx5KEZyYW1lJiBmcmFtZSkKICAgICAgICAgZmlyZVBhZ2VIaWRlRXZlbnRSZWN1cnNpdmVs
eSgqY2hpbGQpOwogfQogCi12b2lkIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0
ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCitib29sIFBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUoSGlz
dG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiB7CiAgICAgaWYgKGl0ZW0uaXNJblBhZ2VDYWNo
ZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
cGFnZSB8fCAhY2FuQ2FjaGUoKnBhZ2UpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhZ2UtPmlzVXRpbGl0eVBhZ2Uo
KSwgIlV0aWxpdHkgcGFnZXMgc3VjaCBhcyBTVkdJbWFnZSBwYWdlcyBzaG91bGQgbmV2ZXIgZ28g
aW50byBQYWdlQ2FjaGUiKTsKIApAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgUGFnZUNhY2hlOjph
ZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKICAgICAvLyBjb3Vs
ZCBoYXZlIGFsdGVyZWQgdGhlIHBhZ2UgaW4gYSB3YXkgdGhhdCBjb3VsZCBwcmV2ZW50IGNhY2hp
bmcuCiAgICAgaWYgKCFjYW5DYWNoZSgqcGFnZSkpIHsKICAgICAgICAgc2V0UGFnZUNhY2hlU3Rh
dGUoKnBhZ2UsIERvY3VtZW50OjpOb3RJblBhZ2VDYWNoZSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGRlc3Ryb3lSZW5kZXJUcmVlKHBhZ2Ut
Pm1haW5GcmFtZSgpKTsKQEAgLTQ2NSw2ICs0NjUsNyBAQCB2b2lkIFBhZ2VDYWNoZTo6YWRkSWZD
YWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgICAgIG1faXRlbXMu
YWRkKCZpdGVtKTsKICAgICB9CiAgICAgcHJ1bmUoUHJ1bmluZ1JlYXNvbjo6UmVhY2hlZE1heFNp
emUpOworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4g
UGFnZUNhY2hlOjp0YWtlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvUGFnZUNhY2hlLmgKaW5kZXggYTYyZGY5YWM4NTc0ODljZDFkMzkxMDMwYTgzOTg3ODAz
ODUyZGU2Zi4uZTIxMWNjNDU5ZmVlZmVkZmJmYTk0NDkyNzcyZTg5ZDAzMjAxMTU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heFNpemUodW5zaWduZWQpOyAvLyBudW1iZXIgb2YgcGFn
ZXMgdG8gY2FjaGUuCiAgICAgdW5zaWduZWQgbWF4U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
U2l6ZTsgfQogCi0gICAgdm9pZCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsg
Ly8gUHJ1bmVzIGlmIG1heFNpemUoKSBpcyBleGNlZWRlZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiwgUGFnZSopOyAvLyBQcnVuZXMgaWYgbWF4
U2l6ZSgpIGlzIGV4Y2VlZGVkLgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlKEhpc3Rv
cnlJdGVtJik7CiAgICAgQ2FjaGVkUGFnZSogZ2V0KEhpc3RvcnlJdGVtJiwgUGFnZSopOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRQYWdlPiB0YWtlKEhpc3RvcnlJdGVtJiwgUGFnZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZjZmZmIxM2ZmNTk3
ZWUyNDIxMWYxZDQ5ZjE2MGJiYmI3YjhkZGQ1OC4uMWVhN2YzNTJhN2IxNTJmNDNjYzUyMzlkZjUz
OTZhMDU2ZjQyZDgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CkBAIC01MTUsNyArNTE1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBib29sIGlzUmVkaXJlY3Rpb25Gcm9tU2VydmljZVdvcmtl
ciA9IHJlZGlyZWN0UmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNl
OjpTZXJ2aWNlV29ya2VyOwotICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBy
ZWRpcmVjdFJlc3BvbnNlLCBTaG91bGRDb250aW51ZTo6WWVzLCBbaXNSZWRpcmVjdGlvbkZyb21T
ZXJ2aWNlV29ya2VyLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVz
dCkgbXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFtpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VXb3JrZXIsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgdGhpc10gKGF1dG8mJiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgQVNT
RVJUKCFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSk7CiAgICAgICAgIGlmIChyZXF1ZXN0Lmlz
TnVsbCgpIHx8ICFtX21haW5Eb2N1bWVudEVycm9yLmlzTnVsbCgpIHx8ICFtX2ZyYW1lKSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwpAQCAtNTQ4LDExICs1NDgsMTEgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIFJlc291cmNlUmVxdWVzdCYKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZWxzZQotICAg
IHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBTaG91
bGRDb250aW51ZTo6WWVzLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgd2lsbFNl
bmRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gYXNzZXJ0cyBoZXJl
IGFzIHRoZXJlIGFyZSBmb3IgdGhlIG90aGVyIGNhbGxiYWNrcy4gVGhpcyBpcyBkdWUgdG8gdGhl
CiAgICAgLy8gZmFjdCB0aGF0IHRoaXMgImNhbGxiYWNrIiBpcyBzZW50IHdoZW4gc3RhcnRpbmcg
ZXZlcnkgbG9hZCwgYW5kIHRoZSBzdGF0ZSBvZiBjYWxsYmFjawpAQCAtNTYwLDggKzU2MCw2IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBu
ZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgLy8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHBy
ZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKIAotICAgIEFTU0VSVChz
aG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8pOwotCiAgICAgYm9vbCBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSA9ICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpOwogICAgIGlm
ICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AobmV3UmVxdWVz
dC51cmwoKSwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpKSB7CiAgICAgICAgIGNhbmNlbE1h
aW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVzdCkp
OwpAQCAtNjI4LDE2ICs2MjYsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKIAogICAgIHNl
dFJlcXVlc3QobmV3UmVxdWVzdCk7CiAKLSAgICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlICYmIHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKQor
ICAgIGlmICghZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIAogICAgIGF1dG8gbmF2aWdhdGlv
blBvbGljeUNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYWtQdHI8Rm9ybVN0YXRlPiYmLCBTaG91bGRD
b250aW51ZSBzaG91bGRDb250aW51ZSkgbXV0YWJsZSB7CiAgICAgICAgIG1fd2FpdGluZ0Zvck5h
dmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKICAgICAgICAgc3dpdGNoIChzaG91bGRDb250aW51ZSkg
ewotICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uOgotICAgICAgICAg
ICAgLy8gV2UgaGFuZGxlIHN1c3BlbnNpb24gYnkgbmF2aWdhdGluZyBmb3J3YXJkIHRvIGFib3V0
OmJsYW5rLCB3aGljaCBsZWF2ZXMgdXMgc2V0dXAgdG8gbmF2aWdhdGUgYmFjayB0byByZXN1bWUu
Ci0gICAgICAgICAgICByZXF1ZXN0ID0geyBXVEY6OmJsYW5rVVJMKCkgfTsKLSAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFNob3VsZENvbnRpbnVlOjpObzoKICAgICAgICAgICAgIHN0
b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY1MSwx
MSArNjQ1LDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmMKICAgICBBU1NFUlQoIW1fd2FpdGlu
Z0Zvck5hdmlnYXRpb25Qb2xpY3kpOwogICAgIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kg
PSB0cnVlOwogCi0gICAgaWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpGb3JT
dXNwZW5zaW9uKSB7Ci0gICAgICAgIG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG5ld1JlcXVlc3QpLCBudWxscHRyLCBzaG91bGRDb250aW51ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBmcmFtZUxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCkuY2hlY2tO
YXZpZ2F0aW9uUG9saWN5KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdU
Rk1vdmUobmF2aWdhdGlvblBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKQEAgLTE2OTMs
MTAgKzE2ODIsOCBAQCBib29sIERvY3VtZW50TG9hZGVyOjptYXliZUxvYWRFbXB0eSgpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5S
ZXNvdXJjZShTaG91bGRDb250aW51ZSBzaG91bGRDb250aW51ZSkKK3ZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiB7Ci0gICAgQVNTRVJUKHNob3VsZENvbnRp
bnVlICE9IFNob3VsZENvbnRpbnVlOjpObyk7Ci0KICAgICBtX21haW5Eb2N1bWVudEVycm9yID0g
UmVzb3VyY2VFcnJvcigpOwogICAgIHRpbWluZygpLm1hcmtTdGFydFRpbWVBbmRGZXRjaFN0YXJ0
KCk7CiAgICAgQVNTRVJUKCFtX21haW5SZXNvdXJjZSk7CkBAIC0xNzIyLDcgKzE3MDksNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxkQ29udGlu
dWUgc2hvdWxkQ29udGludWUpCiAgICAgQVNTRVJUKHRpbWluZygpLnN0YXJ0VGltZSgpKTsKICAg
ICBBU1NFUlQodGltaW5nKCkuZmV0Y2hTdGFydCgpKTsKIAotICAgIHdpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSgpLCBzaG91bGRDb250
aW51ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSAoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgd2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdChtX3JlcXVlc3QpLCBSZXNvdXJjZVJlc3BvbnNlKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpIG11dGFibGUgewogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogCiAgICAgICAg
IC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBsZWFkIHRvIG91ciBGcmFtZSBiZWluZyBkZXRhY2hl
ZCBvciBjYW5jZWxsaW5nIHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IDUwMWE1MjczNzhmOTgx
NjExNjZmMGExY2JlNzYxNDI1MTQxMTA1ZTAuLmZlYWM5MDAyMGI3OGE3NGViZGQ3NzI0ODA0MWQ5
MWFiMDg1YmNjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0y
NDcsNyArMjQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsK
ICAgICB2b2lkIHNldE1haW5SZXNvdXJjZURhdGFCdWZmZXJpbmdQb2xpY3koRGF0YUJ1ZmZlcmlu
Z1BvbGljeSk7CiAKLSAgICB2b2lkIHN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShTaG91bGRDb250
aW51ZSk7CisgICAgdm9pZCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgd2lsbENvbnRpbnVlTWFpblJlc291cmNlTG9hZEFmdGVyUmVkaXJlY3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJBcmNoaXZlUmVzb3VyY2VzKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgU2hv
dWxkQ29udGludWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZygpOwogICAgIHZvaWQgbWFpblJlY2VpdmVk
RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
ODMzNjUyMmE2MTA2MjhiODRlM2RkMTc5NDYwOWJjZjJlYzEyZmIxMS4uNTUzNTQ3OTExNDdlNTg4
YTA5NGViNmNiYWMxYjQyN2ExN2VmZGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6aW5pdCgpCiAgICAg
Ly8gVGhpcyBzb21ld2hhdCBvZGQgc2V0IG9mIHN0ZXBzIGdpdmVzIHRoZSBmcmFtZSBhbiBpbml0
aWFsIGVtcHR5IGRvY3VtZW50LgogICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50
LmNyZWF0ZURvY3VtZW50TG9hZGVyKFJlc291cmNlUmVxdWVzdChVUkwoeyB9LCBlbXB0eVN0cmlu
ZygpKSksIFN1YnN0aXR1dGVEYXRhKCkpLnB0cigpKTsKICAgICBzZXRQcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyKG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENvbnRpbnVl
OjpZZXMpOworICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKCk7CiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7CkBAIC0xNzcyLDcgKzE3NzIsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoT3B0aW9uU2V0PFJlbG9hZE9wdGlvbj4gb3B0aW9ucykK
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xlYXJQcm92aXNpb25hbEl0ZW1Q
b2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCiB7Ci0gICAgQVNTRVJUKCFtX2ZyYW1l
LmRvY3VtZW50KCkgfHwgbV9mcmFtZS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERv
Y3VtZW50OjpJblBhZ2VDYWNoZSk7CisgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLmRvY3VtZW50KCktPnBhZ2VDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6OkluUGFnZUNhY2hl
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoIWlzU3RvcExvYWRpbmdBbGxvd2VkKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTg2Niw2ICsxODY4LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
c2V0RG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIWxv
YWRlciAmJiAhbV9kb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGxv
YWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgQVNT
RVJUKGxvYWRlciAhPSBtX2RvY3VtZW50TG9hZGVyKTsKICAgICBBU1NFUlQoIWxvYWRlciB8fCBs
b2FkZXItPmZyYW1lTG9hZGVyKCkgPT0gdGhpcyk7CkBAIC0xOTUzLDcgKzE5NTgsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogCiAgICAgd2lsbFRyYW5zaXRp
b25Ub0NvbW1pdHRlZCgpOwogCi0gICAgaWYgKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSAmJiBo
aXN0b3J5KCkuY3VycmVudEl0ZW0oKSkgeworICAgIGlmICghbV9mcmFtZS50cmVlKCkucGFyZW50
KCkgJiYgaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCkgJiYgaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCkg
IT0gaGlzdG9yeSgpLnByb3Zpc2lvbmFsSXRlbSgpKSB7CiAgICAgICAgIC8vIENoZWNrIHRvIHNl
ZSBpZiB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJv
bSBpbnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCiAgICAgICAgIC8vIFdlIGFyZSBkb2luZyB0
aGlzIGhlcmUgYmVjYXVzZSB3ZSBrbm93IGZvciBzdXJlIHRoYXQgYSBuZXcgcGFnZSBpcyBhYm91
dCB0byBiZSBsb2FkZWQuCiAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuYWRkSWZDYWNo
ZWFibGUoKmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpLCBtX2ZyYW1lLnBhZ2UoKSk7CkBAIC0zMzQ4
LDExICszMzUzLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgIGRpYWdub3N0
aWNMb2dnaW5nQ2xpZW50LmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnBhZ2VDYWNoZUtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJldHJp
ZXZhbEtleSgpLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdEZhaWwsIFNob3VsZFNhbXBsZTo6WWVz
KTsKICAgICB9CiAKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5k
bGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgc2hvdWxkQ29u
dGludWVdICgpIG11dGFibGUgeworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBwcmVwYXJlRm9yTG9hZFN0YXJ0
KFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IFdURk1vdmUocHJvdGVjdGVkRnJhbWUpLCBzaG91bGRD
b250aW51ZV0geworICAgICAgICBwcmVwYXJlRm9yTG9hZFN0YXJ0KFt0aGlzLCBwcm90ZWN0ZWRG
cmFtZSA9IFdURk1vdmUocHJvdGVjdGVkRnJhbWUpXSB7CiAKICAgICAgICAgICAgIC8vIFRoZSBs
b2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRTdGFydCgpLCBu
dWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLAogICAgICAgICAgICAg
Ly8gc28gd2UgbmVlZCB0byBudWxsIGNoZWNrIGl0IGFnYWluLgpAQCAtMzM2OSwxNiArMzM3NCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
bG9hZGluZ0Zyb21DYWNoZWRQYWdlID0gZmFsc2U7CiAKLSAgICAgICAgICAgIC8vIFdlIGhhbmRs
ZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBhYm91dDpibGFuaywgd2hpY2gg
bGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVzdW1lLgotICAgICAgICAgICAg
aWYgKHNob3VsZENvbnRpbnVlID09IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGRvIGEgc3RhbmRhcmQgbG9hZCB0byBhYm91
dDpibGFuayBpbnN0ZWFkIG9mIHJldXNpbmcgd2hhdGV2ZXIgdGhlIGxvYWQgdHlwZSB3YXMgb24g
cHJvY2VzcyBzd2FwLgotICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCB1c2luZyBhIEJh
Y2svRm9yd2FyZCBsb2FkIHRvIGxvYWQgYWJvdXQgYmxhbmsgd291bGQgY2F1c2UgdGhlIGN1cnJl
bnQgSGlzdG9yeUl0ZW0ncyB1cmwgdG8gYmUKLSAgICAgICAgICAgICAgICAvLyBvdmVyd3JpdHRl
biB3aXRoICdhYm91dDpibGFuaycsIHdoaWNoIHdlIGRvIG5vdCB3YW50LgotICAgICAgICAgICAg
ICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpTdGFuZGFyZDsKLSAgICAgICAgICAgICAg
ICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxv
YWRBZnRlclJlZGlyZWN0KHsgV1RGOjpibGFua1VSTCgpIH0pOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5S
ZXNvdXJjZShzaG91bGRDb250aW51ZSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9KTsKICAgICB9
OwogICAgIApAQCAtMzM5Myw3ICszMzg5LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVM
b2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwKICAgICBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgU2hvdWxk
Q29udGludWUgc2hvdWxkQ29udGludWUsIEFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCBhbGxv
d05hdmlnYXRpb25Ub0ludmFsaWRVUkwsIE5ld0ZyYW1lT3BlbmVyUG9saWN5IG9wZW5lclBvbGlj
eSkKIHsKLSAgICBBU1NFUlQoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6OkZvclN1
c3BlbnNpb24pOwogICAgIGlmIChzaG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6WWVz
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBl
cy5oCmluZGV4IGE1YTFmN2ZlYmU3OWNiYWMwOTA0ZGJkYzBkNzVmZTI2YTk0OGZjZTEuLmEzZDBm
MjQyY2FmMGRkNzQ4ODk3ZmRlZTFjNDYzYjFmZWVhMWQzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaApAQCAtNDQsNyArNDQsNyBAQCBlbnVtIGNsYXNzIFBvbGlj
eUFjdGlvbiA6IHVpbnQ4X3QgewogICAgIFVzZSwKICAgICBEb3dubG9hZCwKICAgICBJZ25vcmUs
Ci0gICAgU3VzcGVuZCwKKyAgICBTdXNwZW5kLCAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IHVzZWQg
YnkgV2ViS2l0MiBzbyB3ZSBzaG91bGRuJ3QgbmVlZCB0aGlzIGluIHRoZSBXZWJDb3JlIGVudW0u
CiB9OwogCiBlbnVtIGNsYXNzIFJlbG9hZE9wdGlvbiA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGI5ZjJjNTM5OTNlZTEzZTljNTkzMDFkZGQx
MzFkNzM1OTBjNDQ0NTUuLjNiNmQxMGEzZjhkMzVlN2MxMzhkNGEzODIxY2ZjODhhYTg5OGUyODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6
SWdub3JlOgogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgU2hvdWxk
Q29udGludWU6Ok5vKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlN1c3BlbmQ6Ci0gICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyBXVEY6OmJsYW5rVVJMKCkgfSwgbnVsbHB0ciwgU2hv
dWxkQ29udGludWU6OkZvclN1c3BlbnNpb24pOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246OlVzZToKICAgICAgICAg
ICAgIGlmICghbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVl
c3QpKSB7CiAgICAgICAgICAgICAgICAgaGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJh
bWUubG9hZGVyKCkuY2xpZW50KCkuY2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCmluZGV4IDIwNzFmZmFiMTc0NmYwNWJmNDIwYzA1
YTE0ZmVmZTA0NTUzOGJmZWYuLmQ3ZmQ3YjNmYjE3YTU4MjFjZDMxNDU3YjI5OGI1MDJlMjZiMGQ3
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaApAQCAtNTQsOCArNTQsNyBA
QCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCiBlbnVtIGNsYXNzIFNob3VsZENvbnRpbnVlIHsK
ICAgICBZZXMsCi0gICAgTm8sCi0gICAgRm9yU3VzcGVuc2lvbgorICAgIE5vCiB9OwogCiBlbnVt
IGNsYXNzIFBvbGljeURlY2lzaW9uTW9kZSB7IFN5bmNocm9ub3VzLCBBc3luY2hyb25vdXMgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4
IGNhNWFlZWY0MGI2ZWM2OTczOTIwNzEzMjM2MzkxYjFjZjQzMWM0NmYuLjdlZDIyMzgwNDA1MDAz
YzA2ZjJiNjM3ZWFiMGZkMWM0ZjBjMjM4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMTMwLDE0ICsxMzAsMTIgQEAgdm9pZCBTdXNw
ZW5kZWRQYWdlUHJveHk6OnVuc3VzcGVuZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CiB9CiAK
LXZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkKCkKK3ZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5OjpkaWRTdXNwZW5kKCkKIHsKICAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiU3Vz
cGVuZGVkUGFnZVByb3h5ICVzIGZyb20gcHJvY2VzcyAlaSBmaW5pc2hlZCB0cmFuc2l0aW9uIHRv
IHN1c3BlbmRlZCIsIGxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKIAogICAgIG1fZmluaXNoZWRTdXNwZW5kaW5nID0gdHJ1ZTsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6VXBkYXRlQWN0aXZlUGFnZXMoKSwgMCk7Ci0K
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0
cjsKICNlbmRpZgpAQCAtMTU5LDggKzE1Nyw4IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojpk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImIGRlY29kCiB7
CiAgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKLSAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRGb3JG
cmFtZTo6bmFtZSgpKSB7Ci0gICAgICAgIGRpZEZpbmlzaExvYWQoKTsKKyAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN1c3BlbmRBZnRl
clByb2Nlc3NTd2FwOjpuYW1lKCkpIHsKKyAgICAgICAgZGlkU3VzcGVuZCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oCmluZGV4IDExM2JkNTFlNzRiZTNjYzdiNzk5MzBjYzJjMjVmY2ZhOTk5N2Y4M2UuLmI2
NjFmNTJhODZjNTIzNmNkN2YxODJhZGJhMjU3NmZiZjg2YTAxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpOworICAgIHZv
aWQgZGlkU3VzcGVuZCgpOwogICAgIHZvaWQgZGlkRmFpbFRvU3VzcGVuZCgpOwogCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDA1MjM2MWY3YTJhNzBkNjc2MGM3NDM3NmNjMzdhMmU4MTljMzk0YTEuLmM1Y2Vh
ZjQ2NThjMzA1YjFiZmJlYzk1ZWJhZWQ5Y2VmYTRlOGEwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjc3MCw2ICsyNzcwLDE1IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsVG9TdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKKyNpZiAhQ09NUElMRVIoTVNWQykKK05PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUCisjZW5kaWYKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdXNwZW5kQWZ0ZXJQcm9jZXNz
U3dhcCgpCit7CisgICAgLy8gT25seSB0aGUgU3VzcGVuZGVkUGFnZVByb3h5IHNob3VsZCBiZSBn
ZXR0aW5nIHRoaXMgY2FsbC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiB7CiAgICAgaWYg
KG1fdXNlckFnZW50ID09IHVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYTMyZTgzMWY1OWI2ZWNjMWI5OTgwMjRiYTM1N2JmZTRmNmQ2NTlkNy4uYjEy
OTliNzdkNTFjYWNjMGEzN2VjNzNlNTMyOThkZjg5Yzc0ODllNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NjcsNiArMTU2Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWF0dGFjaFRvV2ViUHJvY2VzcygpOwogICAgIHZvaWQgc3dhcFRvV2ViUHJvY2VzcyhS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5
PiYmLCBTaG91bGREZWxheUF0dGFjaGluZ0RyYXdpbmdBcmVhKTsKICAgICB2b2lkIGRpZEZhaWxU
b1N1c3BlbmRBZnRlclByb2Nlc3NTd2FwKCk7CisgICAgdm9pZCBkaWRTdXNwZW5kQWZ0ZXJQcm9j
ZXNzU3dhcCgpOwogCiAgICAgdm9pZCBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoU2hvdWxk
RGVsYXlBdHRhY2hpbmdEcmF3aW5nQXJlYSA9IFNob3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0Fy
ZWE6Ok5vKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IGY3YjQzYWRlYmU1Zjg2ODgxZTcwZGE5NjVkMTU1NGFkYzU1ZDVjNzMu
LmU2ZTk0ZmU5YTM4YmIwNGJhM2IyZTVjYTU3ZWQxZTY2YzcxNWNlNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUwNSw2ICs1
MDUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICBEaWRGYWls
VG9TdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpCisgICAgRGlkU3VzcGVuZEFmdGVyUHJvY2Vzc1N3
YXAoKQogCiAgICAgSW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChXZWJDb3JlOjpJbnRT
aXplIG5ld1NpemUpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDNlNmYz
MWE1OWVjZDBiY2RlYWIyMDVjMzI1MzNjY2FlOWMxYjI1ZTUuLjNmZGYxZTRmNWIwNmQyYmNjZGFh
YjQwZTk5MmI3MWUyZGRkNDg2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzM1LDEyICs3MzUsNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRm9yIHN1c3BlbnNpb24gbG9hZHMgdG8gYWJvdXQ6Ymxhbmss
IG5vIG5lZWQgdG8gYXNrIHRoZSBTdXNwZW5kZWRQYWdlUHJveHkuCi0gICAgaWYgKHJlcXVlc3Qu
dXJsKCkgPT0gV1RGOjpibGFua1VSTCgpICYmIHdlYlBhZ2UtPmlzU3VzcGVuZGVkKCkpIHsKLSAg
ICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0
aGUgYnVuZGxlIGNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAppbmRleCA0MDcyMmM4NjJmZTBiYzVjZmE4Y2E4
MGEzZmE4MzIwOGM3MzI3MWMwLi5iMmQ1NGE2MjdiOTQ1ODNiZGEzNTE4YzRlN2MzMzY0NDgxYjYw
NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC01MCw3ICs1MCw2IEBAIHZvaWQgV2ViRG9jdW1lbnRMb2Fk
ZXI6OmRldGFjaEZyb21GcmFtZSgpCiB2b2lkIFdlYkRvY3VtZW50TG9hZGVyOjpzZXROYXZpZ2F0
aW9uSUQodWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQp
OwotICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uSUQgfHwgbV9uYXZpZ2F0aW9uSUQgPT0gbmF2aWdh
dGlvbklEKTsKIAogICAgIG1fbmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDlhZTM3OGIy
ODhjOTMwMDMzYzhkOTM1OGMxYzg4ZWY1ZGU3OTYyZTguLjM5NTc1MzUxMDU2N2E5NWExMTFhYTRi
MDdmYTEwZTYzMTM4ZDQxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTI3NSw3ICsyNzUsMTYgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rp
b24KICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXROYXZpZ2F0aW9uSUQobmF2aWdhdGlv
bklEKTsKICAgICB9CiAKKyAgICBib29sIHNob3VsZFN1c3BlbmQgPSBmYWxzZTsKKyAgICBpZiAo
YWN0aW9uID09IFBvbGljeUFjdGlvbjo6U3VzcGVuZCkgeworICAgICAgICBzaG91bGRTdXNwZW5k
ID0gdHJ1ZTsKKyAgICAgICAgYWN0aW9uID0gUG9saWN5QWN0aW9uOjpJZ25vcmU7CisgICAgfQor
CiAgICAgZnVuY3Rpb24oYWN0aW9uKTsKKworICAgIGlmIChzaG91bGRTdXNwZW5kKQorICAgICAg
ICBwYWdlKCktPnN1c3BlbmRGb3JQcm9jZXNzU3dhcCgpOwogfQogCiB2b2lkIFdlYkZyYW1lOjpz
dGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCBjYjcxOWQ0MDVjNDNhZGFlZTRmMmM1MzhhZmFhODIxYjFh
YmRjNjFjLi5iMjhmMDQwZTFiMjVjMzgxM2FlNWEwYWQ2YWVjNWFkZTg1ZWIzN2JlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTg0LDYgKzE4
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUNhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGluZ0xvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CkBAIC0xMzExLDYgKzEzMTIsMjcgQEAgdm9pZCBXZWJQ
YWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xvc2VQ
YWdlKGZhbHNlKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZEZvclByb2Nlc3NTd2FwKCkK
K3sKKyAgICBhdXRvIGZhaWxlZFRvU3VzcGVuZCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldIHsKKyAgICAgICAgY2xvc2UoKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRGYWlsVG9TdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpKTsKKyAgICB9
OworCisgICAgYXV0byogY3VycmVudEhpc3RvcnlJdGVtID0gbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS5oaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKKyAgICBpZiAoIWN1cnJlbnRI
aXN0b3J5SXRlbSkgeworICAgICAgICBmYWlsZWRUb1N1c3BlbmQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5hZGRJZkNhY2hlYWJs
ZSgqY3VycmVudEhpc3RvcnlJdGVtLCBjb3JlUGFnZSgpKSkgeworICAgICAgICBmYWlsZWRUb1N1
c3BlbmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXAoKSk7Cit9CisKIHZvaWQgV2Vi
UGFnZTo6bG9hZFVSTEluRnJhbWUoVVJMJiYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQogewogICAg
IFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1l
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUw
YWYyZjYzNjg2NmQ0YmViNGE5YzVlOWUwYmExZDA2ODQ4NzEwMDQuLjA5OWIyYzVmYTA5ZDY0MmVk
NGFlNGM1MjAxZmM0N2ExYTFkYTkxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKQEAgLTQ1MCw2ICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ck1haW5GcmFtZU5hbWUoKTsKICAgICB2b2lkIHNlbmRDbG9zZSgpOwogCisgICAgdm9pZCBzdXNw
ZW5kRm9yUHJvY2Vzc1N3YXAoKTsKKwogICAgIHZvaWQgc2VuZFNldFdpbmRvd0ZyYW1lKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogCiAgICAgZG91YmxlIHRleHRab29tRmFjdG9yKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQppbmRleCBiZGFlNzQ2ZDVkNDhlNTgwZDMzYmE5ZWNkYTM2MzYxNWY5M2I5ZjZjLi4yZjI0
OTZiZjRhYjE4OGNlMGY4MDMzYTI3YWU4ZmJmY2UyNzlmMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTQ2MCwxNCArNDYw
LDYgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIFVSTCBtYWluRnJhbWVVUkwgPSB7IFVSTCgpLCBtYWluRnJhbWUtPnVybCgp
IH07Ci0gICAgaWYgKHBhZ2UuaXNTdXNwZW5kZWQoKSkgewotICAgICAgICAvLyBTdXNwZW5kZWQg
cGFnZSBhcmUgbmF2aWdhdGVkIHRvIGFib3V0OmJsYW5rIHVwb24gc3VzcGVuc2lvbiBzbyB3ZSBy
ZWFsbHkgd2FudCB0byByZXBvcnQgdGhlIHByZXZpb3VzIFVSTC4KLSAgICAgICAgaWYgKGF1dG8q
IGNvcmVGcmFtZSA9IG1haW5GcmFtZS0+Y29yZUZyYW1lKCkpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvKiBiYWNrSGlzdG9yeUl0ZW0gPSBjb3JlRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5wcmV2
aW91c0l0ZW0oKSkKLSAgICAgICAgICAgICAgICBtYWluRnJhbWVVUkwgPSB7IFVSTCgpLCBiYWNr
SGlzdG9yeUl0ZW0tPnVybFN0cmluZygpIH07Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBSZWY8
U2VjdXJpdHlPcmlnaW4+IG1haW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
bWFpbkZyYW1lVVJMKTsKICAgICBTdHJpbmcgbWFpbkZyYW1lT3JpZ2luU3RyaW5nOwogICAgIGlm
ICghbWFpbkZyYW1lT3JpZ2luLT5pc1VuaXF1ZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357251</attachid>
            <date>2018-12-13 13:58:00 -0800</date>
            <delta_ts>2018-12-13 15:17:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192668-20181213135759.patch</filename>
            <type>text/plain</type>
            <size>32344</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdjMzMzYmJjNDkxZTIz
NjUzMjgxMzMzNGQwZjQxYTUzMWI3NTA3NS4uNWYwYjBkODkzMWY2NWY1ZDkzMDAyMzQ4ZWRiMDIz
YzhkOWU4NTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTEyLTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIFdlIHNob3VsZCBu
b3QgbmVlZCB0byBuYXZpZ2F0ZSB0byAnYWJvdXQ6YmxhbmsnIHRvIHN1c3BlbmQgcGFnZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY2OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDY3MDE0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxl
eCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAqIGhpc3Rv
cnkvUGFnZUNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9hZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2V0RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSk6Cisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9s
aWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05h
dmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisKIDIw
MTgtMTItMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW01lZGlhU3RyZWFtXSBDYWxjdWxhdGUgd2lkdGggb3IgaGVpZ2h0IHdoZW4gY29uc3RyYWlu
dHMgY29udGFpbiBvbmx5IHRoZSBvdGhlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjOWE0MjczOTdjMWZmZDNiMTQz
Mzc1OTA4OGYzMDg0YzdlODI1YmEzLi5iNTM4YTlkNjdiMDZiNWQ3MmMwNmI5NWEwMTA0MDA2YWFk
NWM5NWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE4LTEyLTEzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIFdlIHNob3VsZCBub3QgbmVl
ZCB0byBuYXZpZ2F0ZSB0byAnYWJvdXQ6YmxhbmsnIHRvIHN1c3BlbmQgcGFnZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjY2OAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDY3MDE0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBUbyBzdXBwb3J0IFBhZ2VDYWNoZSB3aGVuIHByb2Nlc3Mtc3dh
cCBvbiBjcm9zcy1zaXRlIG5hdmlnYXRpb24gaXMgZW5hYmxlZCwKKyAgICAgICAgd2UndmUgYmVl
biBuYXZpZ2F0aW5nIHRoZSBwcmV2aW91cyBwcm9jZXNzIHRvICdhYm91dDpibGFuaycgd2hlbiBz
d2FwcGluZy4KKyAgICAgICAgVGhpcyB3b3VsZCB0cmlnZ2VyIFBhZ2VDYWNoaW5nIG9mIHRoZSBw
YWdlIGluIHRoZSBvbGQgcHJvY2Vzcy4gV2hpbGUKKyAgICAgICAgY29udmVuaWVudCwgdGhpcyBk
ZXNpZ24gaGFzIGxlZCB0byBhIGxvdCBvZiBidWdzIGJlY2F1c2Ugd2UgZGlkIG5vdCByZWFsbHkK
KyAgICAgICAgd2FudCBhIG5hdmlnYXRpb24gdG8gaGFwcGVuIGluIHRoZSBvbGQgcHJvY2Vzcy4K
KworICAgICAgICBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwgd2hlbiBhIFdlYlBhZ2UgaXMgYXNrZWQg
dG8gc3VzcGVuZCAoZm9yIHByb2Nlc3Mtc3dhcCksCisgICAgICAgIHdlIG5vdyBhdHRlbXB0IHRv
IGFkZCBpdCB0byBQYWdlQ2FjaGUgYW5kIHNhdmUgaXQgb24gdGhlIGN1cnJlbnQgSGlzdG9yeUl0
ZW0sCisgICAgICAgICp3aXRob3V0KiB0cmlnZ2VyaW5nIGFueSBuYXZpZ2F0aW9uLiBBbnkgcGVu
ZGluZyBuYXZpZ2F0aW9uIGdldHMgY2FuY2VsbGVkCisgICAgICAgIGFuZCB3ZSBqdXN0IHN1c3Bl
bmQgaW4gcGxhY2UuCisKKyAgICAgICAgTGF0ZXIgb24sIHdoZW4gd2Ugd2FudCB0byBnbyBiYWNr
IHRvIHRoaXMgSGlzdG9yeUl0ZW0sIHdlIHNpbXBseSBsZXZlcmFnZSB0aGUKKyAgICAgICAgZXhp
c3RpbmcgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSgpIGNvZGUgcGF0aC4gVGhlIG9ubHkg
c3VidGxldHkgaXMgdGhhdAorICAgICAgICB3ZSdyZSBhY3R1YWxseSBhc2tpbmcgdGhlIFdlYlBh
Z2UgdG8gbG9hZCBhIEhpc3RvcnlJdGVtIHRoYXQgaXMgdGhlIGN1cnJlbnQKKyAgICAgICAgb25l
IGluIHRoZSBIaXN0b3J5LiBJIGhhZCB0byB0d2VhayBhIHNvbWUgbG9naWMgLyBhc3NlcnRpb25z
IHRvIHN1cHBvcnQgdGhpcworICAgICAgICBhcyB0aGlzIGlzIG5vdCBzb21ldGhpbmcgd2UgdXN1
YWxseSBkby4gSG93ZXZlciwgaXQgYWN0dWFsbHkgd29ya3Mgd2l0aCB2ZXJ5CisgICAgICAgIGxp
dHRsZSBjaGFuZ2VzIGFuZCBzdWNjZXNzZnVsbHkgcmVzdG9yZXMgdGhlIFBhZ2VDYWNoZSBlbnRy
eSBvbiB0aGUgY3VycmVudAorICAgICAgICBIaXN0b3J5SXRlbS4KKworICAgICAgICBUaGVyZSBp
cyBubyBleHBlY3RlZCBvdmVyYWxsIGJlaGF2aW9yIGNoYW5nZSBhbmQgUHJvY2Vzc1N3YXAgQVBJ
IHRlc3RzICh3aGljaAorICAgICAgICBjb3ZlciBQYWdlQ2FjaGUpIHN0aWxsIHBhc3MuIFRoaXMg
aXMgbWVyZWx5IGEgc2ltcGxlciBkZXNpZ24gYmVjYXVzZSBpdCBhdm9pZHMKKyAgICAgICAgbmF2
aWdhdGluZyB0byBhYm91dDpibGFuay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFN1
c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVN
ZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXApOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRG9jdW1lbnRM
b2FkZXI6OnNldE5hdmlnYXRpb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kRm9yUHJvY2Vzc1N3YXApOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Om9yaWdpbik6CisKIDIwMTgt
MTItMTMgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gUmVtb3ZlIHdpdGgtcmVwb3J0IGZyb20gMyBzZXJ2aWNlcyB0aGF0IGFyZSBjdXJyZW50
bHkgbmVlZGVkIG9uIG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXgg
M2NmODM2Y2VkMmVhOTA2ZWM5ZTQ0NzcyNzEyOWMwN2E0NGE5ZWJiZi4uZjEzZTVhOGU4YjJjYjc3
MTA3MGYyMjRhY2Y1OGJlYjRiMjRiZGEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hl
LmNwcApAQCAtNDI1LDEzICs0MjUsMTMgQEAgc3RhdGljIHZvaWQgZmlyZVBhZ2VIaWRlRXZlbnRS
ZWN1cnNpdmVseShGcmFtZSYgZnJhbWUpCiAgICAgICAgIGZpcmVQYWdlSGlkZUV2ZW50UmVjdXJz
aXZlbHkoKmNoaWxkKTsKIH0KIAotdm9pZCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3Rv
cnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQorYm9vbCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxl
KEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogewogICAgIGlmIChpdGVtLmlzSW5QYWdl
Q2FjaGUoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBp
ZiAoIXBhZ2UgfHwgIWNhbkNhY2hlKCpwYWdlKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYWdlLT5pc1V0aWxpdHlQ
YWdlKCksICJVdGlsaXR5IHBhZ2VzIHN1Y2ggYXMgU1ZHSW1hZ2UgcGFnZXMgc2hvdWxkIG5ldmVy
IGdvIGludG8gUGFnZUNhY2hlIik7CiAKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIFBhZ2VDYWNo
ZTo6YWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mIGl0ZW0sIFBhZ2UqIHBhZ2UpCiAgICAgLy8g
Y291bGQgaGF2ZSBhbHRlcmVkIHRoZSBwYWdlIGluIGEgd2F5IHRoYXQgY291bGQgcHJldmVudCBj
YWNoaW5nLgogICAgIGlmICghY2FuQ2FjaGUoKnBhZ2UpKSB7CiAgICAgICAgIHNldFBhZ2VDYWNo
ZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBkZXN0cm95UmVuZGVyVHJlZShw
YWdlLT5tYWluRnJhbWUoKSk7CkBAIC00NjUsNiArNDY1LDcgQEAgdm9pZCBQYWdlQ2FjaGU6OmFk
ZElmQ2FjaGVhYmxlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgICAgICBtX2l0
ZW1zLmFkZCgmaXRlbSk7CiAgICAgfQogICAgIHBydW5lKFBydW5pbmdSZWFzb246OlJlYWNoZWRN
YXhTaXplKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENhY2hlZFBh
Z2U+IFBhZ2VDYWNoZTo6dGFrZShIaXN0b3J5SXRlbSYgaXRlbSwgUGFnZSogcGFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L1BhZ2VDYWNoZS5oCmluZGV4IGE2MmRmOWFjODU3NDg5Y2QxZDM5MTAzMGE4Mzk4
NzgwMzg1MmRlNmYuLmUyMTFjYzQ1OWZlZWZlZGZiZmE5NDQ5Mjc3MmU4OWQwMzIwMTE1ODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhTaXplKHVuc2lnbmVkKTsgLy8gbnVtYmVyIG9m
IHBhZ2VzIHRvIGNhY2hlLgogICAgIHVuc2lnbmVkIG1heFNpemUoKSBjb25zdCB7IHJldHVybiBt
X21heFNpemU7IH0KIAotICAgIHZvaWQgYWRkSWZDYWNoZWFibGUoSGlzdG9yeUl0ZW0mLCBQYWdl
Kik7IC8vIFBydW5lcyBpZiBtYXhTaXplKCkgaXMgZXhjZWVkZWQuCisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBhZGRJZkNhY2hlYWJsZShIaXN0b3J5SXRlbSYsIFBhZ2UqKTsgLy8gUHJ1bmVzIGlm
IG1heFNpemUoKSBpcyBleGNlZWRlZC4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZShI
aXN0b3J5SXRlbSYpOwogICAgIENhY2hlZFBhZ2UqIGdldChIaXN0b3J5SXRlbSYsIFBhZ2UqKTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gdGFrZShIaXN0b3J5SXRlbSYsIFBhZ2Uq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGY2ZmZiMTNm
ZjU5N2VlMjQyMTFmMWQ0OWYxNjBiYmJiN2I4ZGRkNTguLjFlYTdmMzUyYTdiMTUyZjQzY2M1MjM5
ZGY1Mzk2YTA1NmY0MmQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmNwcApAQCAtNTE1LDcgKzUxNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBpc1JlZGlyZWN0aW9uRnJvbVNlcnZpY2VX
b3JrZXIgPSByZWRpcmVjdFJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6U2VydmljZVdvcmtlcjsKLSAgICB3aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0
KSwgcmVkaXJlY3RSZXNwb25zZSwgU2hvdWxkQ29udGludWU6OlllcywgW2lzUmVkaXJlY3Rpb25G
cm9tU2VydmljZVdvcmtlciwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzXSAoYXV0byYmIHJl
cXVlc3QpIG11dGFibGUgeworICAgIHdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCBy
ZWRpcmVjdFJlc3BvbnNlLCBbaXNSZWRpcmVjdGlvbkZyb21TZXJ2aWNlV29ya2VyLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHRoaXNdIChhdXRvJiYgcmVxdWVzdCkgbXV0YWJsZSB7CiAgICAgICAg
IEFTU0VSVCghbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogICAgICAgICBpZiAocmVxdWVz
dC5pc051bGwoKSB8fCAhbV9tYWluRG9jdW1lbnRFcnJvci5pc051bGwoKSB8fCAhbV9mcmFtZSkg
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKQEAgLTU0OCwxMSArNTQ4LDEx
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgICAgIH0pOwogICAgIH0pOwogI2Vsc2UK
LSAgICB3aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
U2hvdWxkQ29udGludWU6OlllcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHdp
bGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIFNob3VsZENvbnRpbnVlIHNob3VsZENvbnRp
bnVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIGFzc2VydHMg
aGVyZSBhcyB0aGVyZSBhcmUgZm9yIHRoZSBvdGhlciBjYWxsYmFja3MuIFRoaXMgaXMgZHVlIHRv
IHRoZQogICAgIC8vIGZhY3QgdGhhdCB0aGlzICJjYWxsYmFjayIgaXMgc2VudCB3aGVuIHN0YXJ0
aW5nIGV2ZXJ5IGxvYWQsIGFuZCB0aGUgc3RhdGUgb2YgY2FsbGJhY2sKQEAgLTU2MCw4ICs1NjAs
NiBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyYwogICAgIC8vIGNhbGxiYWNrcyBpcyBtZWFudCB0
byBwcmV2ZW50LgogICAgIEFTU0VSVCghbmV3UmVxdWVzdC5pc051bGwoKSk7CiAKLSAgICBBU1NF
UlQoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6Ok5vKTsKLQogICAgIGJvb2wgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKTsKICAg
ICBpZiAoIWZyYW1lTG9hZGVyKCktPmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5Q1NQKG5ld1Jl
cXVlc3QudXJsKCksIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKSkgewogICAgICAgICBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG5ld1JlcXVl
c3QpKTsKQEAgLTYyOCwxNiArNjI2LDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKICAg
ICBzZXRSZXF1ZXN0KG5ld1JlcXVlc3QpOwogCi0gICAgaWYgKCFkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSAmJiBzaG91bGRDb250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lv
bikKKyAgICBpZiAoIWRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWFrUHRyPEZvcm1TdGF0ZT4mJiwgU2hv
dWxkQ29udGludWUgc2hvdWxkQ29udGludWUpIG11dGFibGUgewogICAgICAgICBtX3dhaXRpbmdG
b3JOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAgICAgICAgIHN3aXRjaCAoc2hvdWxkQ29udGlu
dWUpIHsKLSAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbjoKLSAgICAg
ICAgICAgIC8vIFdlIGhhbmRsZSBzdXNwZW5zaW9uIGJ5IG5hdmlnYXRpbmcgZm9yd2FyZCB0byBh
Ym91dDpibGFuaywgd2hpY2ggbGVhdmVzIHVzIHNldHVwIHRvIG5hdmlnYXRlIGJhY2sgdG8gcmVz
dW1lLgotICAgICAgICAgICAgcmVxdWVzdCA9IHsgV1RGOjpibGFua1VSTCgpIH07Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBTaG91bGRDb250aW51ZTo6Tm86CiAgICAgICAgICAg
ICBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02
NTEsMTEgKzY0NSw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAgICAgQVNTRVJUKCFtX3dh
aXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5KTsKICAgICBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9s
aWN5ID0gdHJ1ZTsKIAotICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6
Rm9yU3VzcGVuc2lvbikgewotICAgICAgICBuYXZpZ2F0aW9uUG9saWN5Q29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgZnJhbWVMb2FkZXIoKS0+cG9saWN5Q2hlY2tlcigpLmNo
ZWNrTmF2aWdhdGlvblBvbGljeShXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNl
LCBXVEZNb3ZlKG5hdmlnYXRpb25Qb2xpY3lDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCkBAIC0x
NjkzLDEwICsxNjgyLDggQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6bWF5YmVMb2FkRW1wdHkoKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdN
YWluUmVzb3VyY2UoU2hvdWxkQ29udGludWUgc2hvdWxkQ29udGludWUpCit2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogewotICAgIEFTU0VSVChzaG91bGRD
b250aW51ZSAhPSBTaG91bGRDb250aW51ZTo6Tm8pOwotCiAgICAgbV9tYWluRG9jdW1lbnRFcnJv
ciA9IFJlc291cmNlRXJyb3IoKTsKICAgICB0aW1pbmcoKS5tYXJrU3RhcnRUaW1lQW5kRmV0Y2hT
dGFydCgpOwogICAgIEFTU0VSVCghbV9tYWluUmVzb3VyY2UpOwpAQCAtMTcyMiw3ICsxNzA5LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKFNob3VsZENv
bnRpbnVlIHNob3VsZENvbnRpbnVlKQogICAgIEFTU0VSVCh0aW1pbmcoKS5zdGFydFRpbWUoKSk7
CiAgICAgQVNTRVJUKHRpbWluZygpLmZldGNoU3RhcnQoKSk7CiAKLSAgICB3aWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0KG1fcmVxdWVzdCksIFJlc291cmNlUmVzcG9uc2UoKSwgc2hvdWxk
Q29udGludWUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0g
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgIHdpbGxTZW5kUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QobV9yZXF1ZXN0KSwgUmVzb3VyY2VSZXNwb25zZSgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldIChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KSBtdXRhYmxlIHsKICAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKIAogICAg
ICAgICAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJhbWUgYmVpbmcgZGV0
YWNoZWQgb3IgY2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VSZXF1
ZXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAppbmRleCA1MDFhNTI3Mzc4
Zjk4MTYxMTY2ZjBhMWNiZTc2MTQyNTE0MTEwNWUwLi5mZWFjOTAwMjBiNzhhNzRlYmRkNzcyNDgw
NDFkOTFhYjA4NWJjYzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoYm9v
bCk7CiAgICAgdm9pZCBzZXRNYWluUmVzb3VyY2VEYXRhQnVmZmVyaW5nUG9saWN5KERhdGFCdWZm
ZXJpbmdQb2xpY3kpOwogCi0gICAgdm9pZCBzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoU2hvdWxk
Q29udGludWUpOworICAgIHZvaWQgc3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIHdpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJlZGlyZWN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCkBAIC0zNjcsNyArMzY3LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyQXJjaGl2ZVJlc291cmNlcygpOwogI2VuZGlmCiAKLSAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IFNob3VsZENvbnRpbnVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJik7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJik7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoKTsKICAgICB2b2lkIG1haW5SZWNl
aXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDgzMzY1MjJhNjEwNjI4Yjg0ZTNkZDE3OTQ2MDliY2YyZWMxMmZiMTEuLjU1MzU0NzkxMTQ3
ZTU4OGEwOTRlYjZjYmFjMWI0MjdhMTdlZmRkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQog
ICAgIC8vIFRoaXMgc29tZXdoYXQgb2RkIHNldCBvZiBzdGVwcyBnaXZlcyB0aGUgZnJhbWUgYW4g
aW5pdGlhbCBlbXB0eSBkb2N1bWVudC4KICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2Ns
aWVudC5jcmVhdGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKHsgfSwgZW1wdHlT
dHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5wdHIoKSk7CiAgICAgc2V0UHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKLSAgICBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZShTaG91bGRDb250
aW51ZTo6WWVzKTsKKyAgICBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGlu
Z01haW5SZXNvdXJjZSgpOwogCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOwpAQCAtMTc3Miw3ICsxNzcyLDkg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVsb2FkKE9wdGlvblNldDxSZWxvYWRPcHRpb24+IG9wdGlv
bnMpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJ
dGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5KQogewotICAgIEFTU0VSVCghbV9m
cmFtZS5kb2N1bWVudCgpIHx8IG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFnZUNhY2hlU3RhdGUoKSAh
PSBEb2N1bWVudDo6SW5QYWdlQ2FjaGUpOworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYg
bV9mcmFtZS5kb2N1bWVudCgpLT5wYWdlQ2FjaGVTdGF0ZSgpID09IERvY3VtZW50OjpJblBhZ2VD
YWNoZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKCFpc1N0b3BMb2FkaW5nQWxsb3dlZCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE4NjYsNiArMTg2OCw5IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnNldERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYg
KCFsb2FkZXIgJiYgIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVybjsKKworICAgIGlm
IChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKKyAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IEFTU0VSVChsb2FkZXIgIT0gbV9kb2N1bWVudExvYWRlcik7CiAgICAgQVNTRVJUKCFsb2FkZXIg
fHwgbG9hZGVyLT5mcmFtZUxvYWRlcigpID09IHRoaXMpOwpAQCAtMTk1Myw3ICsxOTU4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKIAogICAgIHdpbGxUcmFu
c2l0aW9uVG9Db21taXR0ZWQoKTsKIAotICAgIGlmICghbV9mcmFtZS50cmVlKCkucGFyZW50KCkg
JiYgaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCkpIHsKKyAgICBpZiAoIW1fZnJhbWUudHJlZSgpLnBh
cmVudCgpICYmIGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpICYmIGhpc3RvcnkoKS5jdXJyZW50SXRl
bSgpICE9IGhpc3RvcnkoKS5wcm92aXNpb25hbEl0ZW0oKSkgewogICAgICAgICAvLyBDaGVjayB0
byBzZWUgaWYgd2UgbmVlZCB0byBjYWNoZSB0aGUgcGFnZSB3ZSBhcmUgbmF2aWdhdGluZyBhd2F5
IGZyb20gaW50byB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLgogICAgICAgICAvLyBXZSBhcmUgZG9p
bmcgdGhpcyBoZXJlIGJlY2F1c2Ugd2Uga25vdyBmb3Igc3VyZSB0aGF0IGEgbmV3IHBhZ2UgaXMg
YWJvdXQgdG8gYmUgbG9hZGVkLgogICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmFkZElm
Q2FjaGVhYmxlKCpoaXN0b3J5KCkuY3VycmVudEl0ZW0oKSwgbV9mcmFtZS5wYWdlKCkpOwpAQCAt
MzM0OCwxMSArMzM1MywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICBkaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjpwYWdlQ2FjaGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpy
ZXRyaWV2YWxLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRGYWlsLCBTaG91bGRTYW1wbGU6
Olllcyk7CiAgICAgfQogCi0gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRGcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHNob3Vs
ZENvbnRpbnVlXSAoKSBtdXRhYmxlIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZEZyYW1lID0gbWFrZVJlZihtX2ZyYW1l
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgcHJlcGFyZUZvckxvYWRT
dGFydChbdGhpcywgcHJvdGVjdGVkRnJhbWUgPSBXVEZNb3ZlKHByb3RlY3RlZEZyYW1lKSwgc2hv
dWxkQ29udGludWVdIHsKKyAgICAgICAgcHJlcGFyZUZvckxvYWRTdGFydChbdGhpcywgcHJvdGVj
dGVkRnJhbWUgPSBXVEZNb3ZlKHByb3RlY3RlZEZyYW1lKV0gewogCiAgICAgICAgICAgICAvLyBU
aGUgbG9hZCBtaWdodCBiZSBjYW5jZWxsZWQgaW5zaWRlIG9mIHByZXBhcmVGb3JMb2FkU3RhcnQo
KSwgbnVsbGluZyBvdXQgdGhlIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlciwKICAgICAgICAg
ICAgIC8vIHNvIHdlIG5lZWQgdG8gbnVsbCBjaGVjayBpdCBhZ2Fpbi4KQEAgLTMzNjksMTYgKzMz
NzQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IGZhbHNlOwogCi0gICAgICAgICAgICAvLyBXZSBo
YW5kbGUgc3VzcGVuc2lvbiBieSBuYXZpZ2F0aW5nIGZvcndhcmQgdG8gYWJvdXQ6YmxhbmssIHdo
aWNoIGxlYXZlcyB1cyBzZXR1cCB0byBuYXZpZ2F0ZSBiYWNrIHRvIHJlc3VtZS4KLSAgICAgICAg
ICAgIGlmIChzaG91bGRDb250aW51ZSA9PSBTaG91bGRDb250aW51ZTo6Rm9yU3VzcGVuc2lvbikg
ewotICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkbyBhIHN0YW5kYXJkIGxvYWQgdG8g
YWJvdXQ6YmxhbmsgaW5zdGVhZCBvZiByZXVzaW5nIHdoYXRldmVyIHRoZSBsb2FkIHR5cGUgd2Fz
IG9uIHByb2Nlc3Mgc3dhcC4KLSAgICAgICAgICAgICAgICAvLyBGb3IgZXhhbXBsZSwgdXNpbmcg
YSBCYWNrL0ZvcndhcmQgbG9hZCB0byBsb2FkIGFib3V0IGJsYW5rIHdvdWxkIGNhdXNlIHRoZSBj
dXJyZW50IEhpc3RvcnlJdGVtJ3MgdXJsIHRvIGJlCi0gICAgICAgICAgICAgICAgLy8gb3Zlcndy
aXR0ZW4gd2l0aCAnYWJvdXQ6YmxhbmsnLCB3aGljaCB3ZSBkbyBub3Qgd2FudC4KLSAgICAgICAg
ICAgICAgICBtX2xvYWRUeXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7Ci0gICAgICAgICAg
ICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT53aWxsQ29udGludWVNYWluUmVzb3Vy
Y2VMb2FkQWZ0ZXJSZWRpcmVjdCh7IFdURjo6YmxhbmtVUkwoKSB9KTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdN
YWluUmVzb3VyY2Uoc2hvdWxkQ29udGludWUpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfSk7CiAg
ICAgfTsKICAgICAKQEAgLTMzOTMsNyArMzM4OSw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRp
bnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
CiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeShjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiAgICAgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFNo
b3VsZENvbnRpbnVlIHNob3VsZENvbnRpbnVlLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkwg
YWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMLCBOZXdGcmFtZU9wZW5lclBvbGljeSBvcGVuZXJQ
b2xpY3kpCiB7Ci0gICAgQVNTRVJUKHNob3VsZENvbnRpbnVlICE9IFNob3VsZENvbnRpbnVlOjpG
b3JTdXNwZW5zaW9uKTsKICAgICBpZiAoc2hvdWxkQ29udGludWUgIT0gU2hvdWxkQ29udGludWU6
OlllcykKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
VHlwZXMuaAppbmRleCBhNWExZjdmZWJlNzljYmFjMDkwNGRiZGMwZDc1ZmUyNmE5NDhmY2UxLi5h
M2QwZjI0MmNhZjBkZDc0ODg5N2ZkZWUxYzQ2M2IxZmVlYTFkM2I4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgZW51bSBjbGFzcyBQ
b2xpY3lBY3Rpb24gOiB1aW50OF90IHsKICAgICBVc2UsCiAgICAgRG93bmxvYWQsCiAgICAgSWdu
b3JlLAotICAgIFN1c3BlbmQsCisgICAgU3VzcGVuZCwgLy8gRklYTUU6IFRoaXMgaXMgb25seSB1
c2VkIGJ5IFdlYktpdDIgc28gd2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBpbiB0aGUgV2ViQ29yZSBl
bnVtLgogfTsKIAogZW51bSBjbGFzcyBSZWxvYWRPcHRpb24gOiB1aW50OF90IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCBiOWYyYzUzOTkzZWUxM2U5YzU5MzAx
ZGRkMTMxZDczNTkwYzQ0NDU1Li4zYjZkMTBhM2Y4ZDM1ZTdjMTM4ZDRhMzgyMWNmYzg4YWE4OThl
Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xODMsNyAr
MTgzLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rp
b246Oklnbm9yZToKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIFNo
b3VsZENvbnRpbnVlOjpObyk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdXNwZW5kOgot
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgV1RGOjpibGFua1VSTCgpIH0sIG51bGxwdHIs
IFNob3VsZENvbnRpbnVlOjpGb3JTdXNwZW5zaW9uKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAg
ICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChy
ZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeSht
X2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAppbmRleCAyMDcxZmZhYjE3NDZmMDViZjQy
MGMwNWExNGZlZmUwNDU1MzhiZmVmLi5kN2ZkN2IzZmIxN2E1ODIxY2QzMTQ1N2IyOThiNTAyZTI2
YjBkNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKQEAgLTU0LDggKzU0
LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIAogZW51bSBjbGFzcyBTaG91bGRDb250aW51
ZSB7CiAgICAgWWVzLAotICAgIE5vLAotICAgIEZvclN1c3BlbnNpb24KKyAgICBObwogfTsKIAog
ZW51bSBjbGFzcyBQb2xpY3lEZWNpc2lvbk1vZGUgeyBTeW5jaHJvbm91cywgQXN5bmNocm9ub3Vz
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApp
bmRleCBjYTVhZWVmNDBiNmVjNjk3MzkyMDcxMzIzNjM5MWIxY2Y0MzFjNDZmLi43ZWQyMjM4MDQw
NTAwM2MwNmYyYjYzN2VhYjBmZDFjNGYwYzIzODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTEzMCwxNCArMTMwLDEyIEBAIHZvaWQg
U3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQoKQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwog
fQogCi12b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZCgpCit2b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6ZGlkU3VzcGVuZCgpCiB7CiAgICAgTE9HKFByb2Nlc3NTd2FwcGluZywg
IlN1c3BlbmRlZFBhZ2VQcm94eSAlcyBmcm9tIHByb2Nlc3MgJWkgZmluaXNoZWQgdHJhbnNpdGlv
biB0byBzdXNwZW5kZWQiLCBsb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAKICAgICBtX2ZpbmlzaGVkU3VzcGVuZGluZyA9IHRydWU7CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVwZGF0ZUFjdGl2ZVBhZ2VzKCksIDAp
OwotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3N1c3BlbnNpb25Ub2tlbiA9IG51
bGxwdHI7CiAjZW5kaWYKQEAgLTE1OSw4ICsxNTcsOCBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiBkZWNv
ZAogewogICAgIEFTU0VSVChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCi0gICAgaWYgKGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hMb2Fk
Rm9yRnJhbWU6Om5hbWUoKSkgewotICAgICAgICBkaWRGaW5pc2hMb2FkKCk7CisgICAgaWYgKGRl
Y29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdXNwZW5k
QWZ0ZXJQcm9jZXNzU3dhcDo6bmFtZSgpKSB7CisgICAgICAgIGRpZFN1c3BlbmQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQ
YWdlUHJveHkuaAppbmRleCAxMTNiZDUxZTc0YmUzY2M3Yjc5OTMwY2MyYzI1ZmNmYTk5OTdmODNl
Li5iNjYxZjUyYTg2YzUyMzZjZDdmMTgyYWRiYTI1NzZmYmY4NmEwMTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKKyAg
ICB2b2lkIGRpZFN1c3BlbmQoKTsKICAgICB2b2lkIGRpZEZhaWxUb1N1c3BlbmQoKTsKIAogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCAwNTIzNjFmN2EyYTcwZDY3NjBjNzQzNzZjYzM3YTJlODE5YzM5NGExLi4z
NThkYjZmYzI0ZTNkN2ExNjM4YWJlYmRkZjZkNTY2ZmVkZThkZTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTc1MCw2ICs3NTAsOSBAQCBib29sIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIHN0ZAogICAgIGlmIChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6OlllcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgaWYgKGlzUGFnZU9wZW5lZEJ5RE9NU2hvd2luZ0luaXRpYWxFbXB0eURvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGF1dG8qIGN1cnJlbnRJdGVtID0gbmF2aWdh
dGlvbi5mcm9tSXRlbSgpOwogICAgIGlmICghY3VycmVudEl0ZW0pIHsKICAgICAgICAgTE9HKFBy
b2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiB1bmFibGUgdG8gY3JlYXRl
IHN1c3BlbmRlZCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSAtIE5vIGN1cnJlbnQgYmFjay9mb3J3
YXJkIGl0ZW0iLCBwYWdlSUQoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAg
LTI2MjYsNyArMjYyOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAocHJvY2Vzc0Zvck5hdmlnYXRpb24ucHRyKCkgIT0gJnByb2Nlc3MoKSkgewot
ICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpTdXNwZW5kOworICAgICAg
ICAgICAgcG9saWN5QWN0aW9uID0gaXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKSA/IFBvbGljeUFjdGlvbjo6SWdub3JlIDogUG9saWN5QWN0aW9uOjpTdXNwZW5k
OwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwgc3dhcHBp
bmcgcHJvY2VzcyAlaSB3aXRoIHByb2Nlc3MgJWkgZm9yIG5hdmlnYXRpb24sIHJlYXNvbjogJXtw
dWJsaWN9cyIsIHRoaXMsIHByb2Nlc3NJZGVudGlmaWVyKCksIHByb2Nlc3NGb3JOYXZpZ2F0aW9u
LT5wcm9jZXNzSWRlbnRpZmllcigpLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiKFByb2Nlc3NTd2FwcGluZykgU3dpdGNoaW5nIGZyb20g
cHJvY2VzcyAlaSB0byBuZXcgcHJvY2VzcyAoJWkpIGZvciBuYXZpZ2F0aW9uICUiIFBSSXU2NCAi
ICclcyciLCBwcm9jZXNzSWRlbnRpZmllcigpLCBwcm9jZXNzRm9yTmF2aWdhdGlvbi0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24tPmxv
Z2dpbmdTdHJpbmcoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMjc0NCw4ICsyNzQ3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAgICAgfQogICAgIH07CiAKLSAgICBib29sIGlzSW5p
dGlhbE5hdmlnYXRpb25Jbk5ld1dpbmRvdyA9IG9wZW5lZEJ5RE9NKCkgJiYgIWhhc0NvbW1pdHRl
ZEFueVByb3Zpc2lvbmFsTG9hZHMoKTsKLSAgICBpZiAoIW1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5jb25maWd1cmF0aW9uKCkucHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcigpIHx8
ICFpc0luaXRpYWxOYXZpZ2F0aW9uSW5OZXdXaW5kb3cgfHwgIW1haW5GcmFtZUlESW5QcmV2aW91
c1Byb2Nlc3MpIHsKKyAgICBpZiAoIW1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0
aW9uKCkucHJvY2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lcigpIHx8ICFpc1BhZ2VPcGVu
ZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpIHx8ICFtYWluRnJhbWVJREluUHJl
dmlvdXNQcm9jZXNzKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBhYmxl
IHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBpdC4K
ICAgICAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQYWdlKQogICAgICAgICAgICAgcHJldmlv
dXNQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CkBA
IC0yNzU5LDYgKzI3NjEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICB9OwogfQog
Citib29sIFdlYlBhZ2VQcm94eTo6aXNQYWdlT3BlbmVkQnlET01TaG93aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBvcGVuZWRCeURPTSgpICYmICFoYXNDb21t
aXR0ZWRBbnlQcm92aXNpb25hbExvYWRzKCk7Cit9CisKIC8vIE1TVkMgZ2l2ZXMgYSByZWRlY2xh
cmF0aW9uIGVycm9yIGlmIG5vcmV0dXJuIGlzIHVzZWQgb24gdGhlIGRlZmluaXRpb24gYW5kIG5v
dCB0aGUgZGVjbGFyYXRpb24sIHdoaWxlCiAvLyBDb2NvYSB0ZXN0cyBzZWdmYXVsdCBpZiBpdCBp
cyBtb3ZlZCB0byB0aGUgZGVjbGFyYXRpb24gc2l0ZSAoZXZlbiBpZiB3ZSBtb3ZlIHRoZSBkZWZp
bml0aW9uIHdpdGggaXQhKS4KICNpZiAhQ09NUElMRVIoTVNWQykKQEAgLTI3NzAsNiArMjc3Nywx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXAo
KQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCisjaWYgIUNPTVBJTEVSKE1TVkMpCitO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVAorI2VuZGlmCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3Vz
cGVuZEFmdGVyUHJvY2Vzc1N3YXAoKQoreworICAgIC8vIE9ubHkgdGhlIFN1c3BlbmRlZFBhZ2VQ
cm94eSBzaG91bGQgYmUgZ2V0dGluZyB0aGlzIGNhbGwuCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFn
ZW50KQogewogICAgIGlmIChtX3VzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGEzMmU4MzFmNTliNmVjYzFiOTk4MDI0YmEzNTdi
ZmU0ZjZkNjU5ZDcuLjNkZmQ2NTMyMDNjMzEwN2ZhZTBjMjQ4ZWM3OTUxMDFlOWIwYmQyNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMzkyLDYgKzEzOTIsOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmdGb3JUZXN0aW5nKGJvb2wpOwog
CisgICAgYm9vbCBpc1BhZ2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgp
IGNvbnN0OworCiAgICAgV2ViQ29yZTo6SW50UmVjdCBzeW5jUm9vdFZpZXdUb1NjcmVlbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiB2aWV3UmVjdCk7CiAKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxF
TUVOVCkKQEAgLTE1NjcsNiArMTU2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWF0dGFjaFRv
V2ViUHJvY2VzcygpOwogICAgIHZvaWQgc3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBTaG91bGREZWxh
eUF0dGFjaGluZ0RyYXdpbmdBcmVhKTsKICAgICB2b2lkIGRpZEZhaWxUb1N1c3BlbmRBZnRlclBy
b2Nlc3NTd2FwKCk7CisgICAgdm9pZCBkaWRTdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpOwogCiAg
ICAgdm9pZCBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoU2hvdWxkRGVsYXlBdHRhY2hpbmdE
cmF3aW5nQXJlYSA9IFNob3VsZERlbGF5QXR0YWNoaW5nRHJhd2luZ0FyZWE6Ok5vKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGY3YjQzYWRlYmU1Zjg2ODgxZTcwZGE5NjVkMTU1NGFkYzU1ZDVjNzMuLmU2ZTk0ZmU5YTM4YmIw
NGJhM2IyZTVjYTU3ZWQxZTY2YzcxNWNlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTUwNSw2ICs1MDUsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICBEaWRGYWlsVG9TdXNwZW5kQWZ0ZXJQ
cm9jZXNzU3dhcCgpCisgICAgRGlkU3VzcGVuZEFmdGVyUHJvY2Vzc1N3YXAoKQogCiAgICAgSW1h
Z2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChXZWJDb3JlOjpJbnRTaXplIG5ld1NpemUpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA3ZmRjYzJm
ZTgwYTI3OTljNGRlYWNjMzQ2YWMyYjMxMzdlNjNmOTc5Li5jOGY4MDVlODk4NGIzMjM1MmY5MjU3
MDdjN2FiNWQ0MzZmMWE1MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCkBAIC0yMTk3LDkgKzIxOTcsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwcm9j
ZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgQVBJOgog
ICAgIGlmIChuYXZpZ2F0aW9uLnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbigpKQogICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIocGFnZS5wcm9jZXNzKCksIG51bGxwdHIsICJUaGUg
dHJlYXRBc1NhbWVPcmlnaW5OYXZpZ2F0aW9uIGZsYWcgaXMgc2V0Il9zKTsKIAotICAgIGJvb2wg
aXNJbml0aWFsTG9hZEluTmV3V2luZG93T3BlbmVkQnlET00gPSBwYWdlLm9wZW5lZEJ5RE9NKCkg
JiYgIXBhZ2UuaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpOwogICAgIFVSTCBzb3Vy
Y2VVUkw7Ci0gICAgaWYgKGlzSW5pdGlhbExvYWRJbk5ld1dpbmRvd09wZW5lZEJ5RE9NICYmICFu
YXZpZ2F0aW9uLnJlcXVlc3Rlck9yaWdpbigpLmlzRW1wdHkoKSkKKyAgICBpZiAocGFnZS5pc1Bh
Z2VPcGVuZWRCeURPTVNob3dpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmICFuYXZpZ2F0aW9u
LnJlcXVlc3Rlck9yaWdpbigpLmlzRW1wdHkoKSkKICAgICAgICAgc291cmNlVVJMID0gVVJMIHsg
VVJMKCksIG5hdmlnYXRpb24ucmVxdWVzdGVyT3JpZ2luKCkudG9TdHJpbmcoKSB9OwogICAgIGVs
c2UKICAgICAgICAgc291cmNlVVJMID0gVVJMIHsgeyB9LCBwYWdlLnBhZ2VMb2FkU3RhdGUoKS51
cmwoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggM2U2ZjMxYTU5ZWNk
MGJjZGVhYjIwNWMzMjUzM2NjYWU5YzFiMjVlNS4uM2ZkZjFlNGY1YjA2ZDJiY2NkYWFiNDBlOTky
YjcxZTJkZGQ0ODZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03MzUs
MTIgKzczNSw2IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICAvLyBGb3Igc3VzcGVuc2lvbiBsb2FkcyB0byBhYm91dDpibGFuaywgbm8gbmVl
ZCB0byBhc2sgdGhlIFN1c3BlbmRlZFBhZ2VQcm94eS4KLSAgICBpZiAocmVxdWVzdC51cmwoKSA9
PSBXVEY6OmJsYW5rVVJMKCkgJiYgd2ViUGFnZS0+aXNTdXNwZW5kZWQoKSkgewotICAgICAgICBm
dW5jdGlvbihQb2xpY3lBY3Rpb246OlVzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDQwNzIyYzg2MmZlMGJjNWNmYThjYTgwYTNmYTgz
MjA4YzczMjcxYzAuLmIyZDU0YTYyN2I5NDU4M2JkYTM1MThjNGU3YzMzNjQ0ODFiNjA1YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVu
dExvYWRlci5jcHAKQEAgLTUwLDcgKzUwLDYgQEAgdm9pZCBXZWJEb2N1bWVudExvYWRlcjo6ZGV0
YWNoRnJvbUZyYW1lKCkKIHZvaWQgV2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRpb25JRCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7Ci0gICAg
QVNTRVJUKCFtX25hdmlnYXRpb25JRCB8fCBtX25hdmlnYXRpb25JRCA9PSBuYXZpZ2F0aW9uSUQp
OwogCiAgICAgbV9uYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggOWFlMzc4YjI4OGM5MzAw
MzNjOGQ5MzU4YzFjODhlZjVkZTc5NjJlOC4uMzk1NzUzNTEwNTY3YTk1YTExMWFhNGIwN2ZhMTBl
NjMxMzhkNDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcApAQCAtMjc1LDcgKzI3NSwxNiBAQCB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbgogICAg
ICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldE5hdmlnYXRpb25JRChuYXZpZ2F0aW9uSUQpOwog
ICAgIH0KIAorICAgIGJvb2wgc2hvdWxkU3VzcGVuZCA9IGZhbHNlOworICAgIGlmIChhY3Rpb24g
PT0gUG9saWN5QWN0aW9uOjpTdXNwZW5kKSB7CisgICAgICAgIHNob3VsZFN1c3BlbmQgPSB0cnVl
OworICAgICAgICBhY3Rpb24gPSBQb2xpY3lBY3Rpb246Oklnbm9yZTsKKyAgICB9CisKICAgICBm
dW5jdGlvbihhY3Rpb24pOworCisgICAgaWYgKHNob3VsZFN1c3BlbmQpCisgICAgICAgIHBhZ2Uo
KS0+c3VzcGVuZEZvclByb2Nlc3NTd2FwKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93
bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IGNiNzE5ZDQwNWM0M2FkYWVlNGYyYzUzOGFmYWE4MjFiMWFiZGM2MWMu
LmIyOGYwNDBlMWIyNWMzODEzYWU1YTBhZDZhZWM1YWRlODVlYjM3YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xODQsNiArMTg0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdElt
cGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlQ2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QaW5nTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaD4KQEAgLTEzMTEsNiArMTMxMiwyNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
bmRDbG9zZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbG9zZVBhZ2UoZmFs
c2UpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpzdXNwZW5kRm9yUHJvY2Vzc1N3YXAoKQoreworICAg
IGF1dG8gZmFpbGVkVG9TdXNwZW5kID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0geworICAgICAgICBjbG9zZSgpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZhaWxUb1N1c3BlbmRBZnRlclByb2Nlc3NTd2FwKCkpOworICAgIH07CisKKyAg
ICBhdXRvKiBjdXJyZW50SGlzdG9yeUl0ZW0gPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxv
YWRlcigpLmhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOworICAgIGlmICghY3VycmVudEhpc3RvcnlJ
dGVtKSB7CisgICAgICAgIGZhaWxlZFRvU3VzcGVuZCgpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCFQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLmFkZElmQ2FjaGVhYmxlKCpjdXJy
ZW50SGlzdG9yeUl0ZW0sIGNvcmVQYWdlKCkpKSB7CisgICAgICAgIGZhaWxlZFRvU3VzcGVuZCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRTdXNwZW5kQWZ0ZXJQcm9jZXNzU3dhcCgpKTsKK30KKwogdm9pZCBXZWJQYWdlOjps
b2FkVVJMSW5GcmFtZShVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTBhZjJmNjM2
ODY2ZDRiZWI0YTljNWU5ZTBiYTFkMDY4NDg3MTAwNC4uMDk5YjJjNWZhMDlkNjQyZWQ0YWU0YzUy
MDFmYzQ3YTFhMWRhOTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaApAQCAtNDUwLDYgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyTWFpbkZy
YW1lTmFtZSgpOwogICAgIHZvaWQgc2VuZENsb3NlKCk7CiAKKyAgICB2b2lkIHN1c3BlbmRGb3JQ
cm9jZXNzU3dhcCgpOworCiAgICAgdm9pZCBzZW5kU2V0V2luZG93RnJhbWUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0Jik7CiAKICAgICBkb3VibGUgdGV4dFpvb21GYWN0b3IoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmlu
ZGV4IGJkYWU3NDZkNWQ0OGU1ODBkMzNiYTllY2RhMzYzNjE1ZjkzYjlmNmMuLjJmMjQ5NmJmNGFi
MTg4Y2UwZjgwMzNhMjdhZThmYmZjZTI3OWYzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNDYwLDE0ICs0NjAsNiBAQCBz
dGF0aWMgTlNVUkwgKm9yaWdpbihXZWJQYWdlJiBwYWdlKQogICAgICAgICByZXR1cm4gbmlsOwog
CiAgICAgVVJMIG1haW5GcmFtZVVSTCA9IHsgVVJMKCksIG1haW5GcmFtZS0+dXJsKCkgfTsKLSAg
ICBpZiAocGFnZS5pc1N1c3BlbmRlZCgpKSB7Ci0gICAgICAgIC8vIFN1c3BlbmRlZCBwYWdlIGFy
ZSBuYXZpZ2F0ZWQgdG8gYWJvdXQ6YmxhbmsgdXBvbiBzdXNwZW5zaW9uIHNvIHdlIHJlYWxseSB3
YW50IHRvIHJlcG9ydCB0aGUgcHJldmlvdXMgVVJMLgotICAgICAgICBpZiAoYXV0byogY29yZUZy
YW1lID0gbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIGJh
Y2tIaXN0b3J5SXRlbSA9IGNvcmVGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnByZXZpb3VzSXRl
bSgpKQotICAgICAgICAgICAgICAgIG1haW5GcmFtZVVSTCA9IHsgVVJMKCksIGJhY2tIaXN0b3J5
SXRlbS0+dXJsU3RyaW5nKCkgfTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIFJlZjxTZWN1cml0
eU9yaWdpbj4gbWFpbkZyYW1lT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJh
bWVVUkwpOwogICAgIFN0cmluZyBtYWluRnJhbWVPcmlnaW5TdHJpbmc7CiAgICAgaWYgKCFtYWlu
RnJhbWVPcmlnaW4tPmlzVW5pcXVlKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>