<?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>60872</bug_id>
          
          <creation_ts>2011-05-15 23:56:07 -0700</creation_ts>
          <short_desc>[WebKit2] handleMessageDelayed leaks replyEncoder if decoding fails</short_desc>
          <delta_ts>2011-05-19 10:28:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>404319</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-15 23:56:07 -0700</bug_when>
    <thetext>As I wrote in https://bugs.webkit.org/show_bug.cgi?id=60655#c3, I don&apos;t think the strict PassOwnPtr fix in https://trac.webkit.org/changeset/86296/trunk/Source/WebKit2/Platform/CoreIPC/HandleMessage.h is correct:

---&gt;8---
I&apos;m not sure this patch is right.  Does that mean we&apos;re supposed to leak the replyEncoder if the arguments fail to decode?  If this function is supposed take ownership, It seems more likely we should change the parameter to be a PassOwnPtr.

I tried chasing this for a while, but it mushroomed out of control pretty fast.  I suspect there&apos;s a memory management bug here somewhere.

For example, consider PluginControllerProxy::didReceiveSyncPluginControllerProxyMessage.  Whether this function eventually calls delete on its third argument appears to depend on the MessageID.
---8&lt;---

I don&apos;t understand this code well enough to know whether this is a real problem, but the code looks really fishy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404492</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-16 08:27:04 -0700</bug_when>
    <thetext>Anders might know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404494</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-16 08:28:24 -0700</bug_when>
    <thetext>I think the title of this bug is wrong. I’ll retitle after exploring the code for a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404496</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-16 08:31:08 -0700</bug_when>
    <thetext>As of this writing, handleMessageDelayed is only used for the HandleMouseEventID and GetPluginProcessConnectionID messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404497</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-16 08:34:38 -0700</bug_when>
    <thetext>Yes, there is a leak here when arguments fail to decode. A good way to fix that would be to put the adoptPtr should be in generated code and have handleMessageDelayed take a PassOwnPtr, as Adam seems to be suggesting.

Otherwise, this works fine although it’s a bit awkward. The difference in encoder lifetime is controlled by Connection::dispatchSyncMessage, which calls leakPtr when the reply mode is ManualReply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405189</commentid>
    <comment_count>5</comment_count>
      <attachid>93801</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-17 11:27:47 -0700</bug_when>
    <thetext>Created attachment 93801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406177</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-18 18:36:46 -0700</bug_when>
    <thetext>Committed r86812: &lt;http://trac.webkit.org/changeset/86812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406246</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-18 21:50:35 -0700</bug_when>
    <thetext>This caused a Python test to fail on all bots :(  It&apos;s making the entire tree red:
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/29491/steps/webkitpy-test/logs/stdio
http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/13008/steps/webkitpy-test/logs/stdio
http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/13888/steps/webkitpy-test/logs/stdio
http://build.webkit.org/builders/Qt%20Linux%20Release/builds/33066/steps/webkitpy-test/logs/stdio
http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28WebKit2%20Tests%29/builds/11798/steps/webkitpy-test/logs/stdio

Can we either fix the test or revert the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406466</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-19 10:01:06 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This caused a Python test to fail on all bots :(  It&apos;s making the entire tree red:
&gt; http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28Tests%29/builds/29491/steps/webkitpy-test/logs/stdio
&gt; http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/13008/steps/webkitpy-test/logs/stdio
&gt; http://build.webkit.org/builders/GTK%20Linux%2032-bit%20Release/builds/13888/steps/webkitpy-test/logs/stdio
&gt; http://build.webkit.org/builders/Qt%20Linux%20Release/builds/33066/steps/webkitpy-test/logs/stdio
&gt; http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20%28WebKit2%20Tests%29/builds/11798/steps/webkitpy-test/logs/stdio
&gt; 
&gt; Can we either fix the test or revert the change?

Should be trivial to fix the python test. We just need to update the expected result. I just don’t know how to run the python test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406469</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-19 10:02:49 -0700</bug_when>
    <thetext>I see now:

1) I know how to run them.
2) Philippe Normand fixed this for me. Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406470</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-19 10:02:56 -0700</bug_when>
    <thetext>test-webkitpy runs all python tests (in 30 seconds).  We&apos;re working on removing some of the slow ones so that it will be back to &lt; 5 seconds again soon!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406474</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-19 10:07:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; test-webkitpy runs all python tests (in 30 seconds).  We&apos;re working on removing some of the slow ones so that it will be back to &lt; 5 seconds again soon!

What confused me was the naming here being so different from other related things in WebKit.

When our main test runner is named run-webkit-tests, I would have expected the python test runner to be something like run-webkit-python-tests. Or maybe run-webkitpy-tests.

I was also surprised to learn that:

    1) The name of our python scripts is webkitpy. Seems kinda cryptic to me.
    2) There is a webkitpy directory, but the test-webkitpy script tests things outside that directory.

I think making things a bit more logical and consistent would have made it easier for me to find what I was looking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406480</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-19 10:13:06 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; test-webkitpy runs all python tests (in 30 seconds).  We&apos;re working on removing some of the slow ones so that it will be back to &lt; 5 seconds again soon!
&gt; 
&gt; What confused me was the naming here being so different from other related things in WebKit.

There was a long naming debate long ago.  I think Chris Jerdonek (who&apos;s since left the project) was the main proponent of test-* for test-webkitpy and test-webkitperl.  I&apos;m happy to change them to run-python-tests and run-perl-tests if you&apos;d prefer.

&gt; When our main test runner is named run-webkit-tests, I would have expected the python test runner to be something like run-webkit-python-tests. Or maybe run-webkitpy-tests.
&gt; 
&gt; I was also surprised to learn that:
&gt; 
&gt;     1) The name of our python scripts is webkitpy. Seems kinda cryptic to me.

:shrug:  Again, happy to rename.  It was just the name picked when webkit-patch (then bugzilla-tool) was split out into more than one file and we needed a name for the directory containing said files.  .py is the python file extension.

&gt;     2) There is a webkitpy directory, but the test-webkitpy script tests things outside that directory.

A sign of age.  It used to only test webkitpy.  Then we added more python for QueueStatusServer (queues.webkit.org, which uses python on Google App Engine) and then Adam Roben re-used it to test webkit2&apos;s python code.  These things probably all combine now to add weight to a rename decision.

&gt; I think making things a bit more logical and consistent would have made it easier for me to find what I was looking for.

Again, happy to make changes if someone files a bug with concrete proposal.  I&apos;m completely agnostic to the naming, but I can no longer see the forest between the trees here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406492</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-05-19 10:22:13 -0700</bug_when>
    <thetext>FWIW I am indifferent to whether we rename the files. Personally I&apos;d also vote for moving at least webkitpy (and possibly webkitperl for consistency) somewhere up higher than under Tools/Scripts, and then hopefully being able to move the other python code underneath the new location. But I don&apos;t care enough to do much about it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406497</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-19 10:28:38 -0700</bug_when>
    <thetext>Again, they&apos;re there for historical reasons. :)  Python and perl both have a default import path of ., so its&apos; easy to import webkitpy directly and webkitperl directly. If we moved them up to Tools, we&apos;d have to do ..webkitpy in python and for perl I&apos;m not even sure how you&apos;d do that. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93801</attachid>
            <date>2011-05-17 11:27:47 -0700</date>
            <delta_ts>2011-05-17 11:35:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60872-20110517112746.patch</filename>
            <type>text/plain</type>
            <size>44931</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTEtMDUtMTcgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXZWJLaXQyXSBoYW5kbGVNZXNzYWdlRGVsYXllZCBsZWFrcyByZXBs
eUVuY29kZXIgaWYgZGVjb2RpbmcgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYwODcyCisKKyAgICAgICAgRWxpbWluYXRlIHRoZSBjb25jZXB0
IG9mIFN5bmNSZXBseU1vZGUgYW5kIGluc3RlYWQgaGFuZCBhcm91bmQgb3duZXJzaGlwCisgICAg
ICAgIG9mIHRoZSByZXBseSBkZWNvZGVyIHVzaW5nIGFuIE93blB0ci4KKworICAgICAgICAqIFBs
YXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0
aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKTogRWxpbWluYXRlZCBjb21tZW50cyB0aGF0IHNheQor
ICAgICAgICB0aGUgc2FtZSB0aGluZ3MgdGhlIGNvZGUgaXRzZWxmIGRvZXMuIFJlbW92ZWQgY29k
ZSB0aGF0IGhhbmRsZXMgdGhlCisgICAgICAgIHJlcGx5IG1vZGUuIEluc3RlYWQsIHBhc3MgdGhl
IE93blB0ciB0byB0aGUgbWVzc2FnZSBoYW5kbGluZyBmdW5jdGlvbiBhbmQKKyAgICAgICAgbWFr
ZSB0aGUgY2FsbCB0byBzZW5kU3luY1JlcGx5IGNvbmRpdGlvbmFsIG9uIHdoZXRoZXIgdGhlIHJl
cGx5IGVuY29kZXIKKyAgICAgICAgaXMgc3RpbGwgbm9uLW51bGwuCisKKyAgICAgICAgKiBQbGF0
Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaDogUmVtb3ZlZCBTeW5jUmVwbHlNb2RlLiBNYWRlCisg
ICAgICAgIGRpZFJlY2VpdmVTeW5jTWVzc2FnZSByZXR1cm4gdm9pZCwgYW5kIHRha2UgT3duUHRy
PEFyZ3VtZW50RW5jb2Rlcj4mIGZvcgorICAgICAgICB0aGUgcmVwbHkgZW5jb2Rlci4KKworICAg
ICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoQ29yZUlQ
Qzo6aGFuZGxlTWVzc2FnZURlbGF5ZWQpOiBUYWtlIGEgUGFzc093blB0ci4gUmVtb3ZlZCB0aGUg
Y2FsbCB0bworICAgICAgICBhZG9wdFB0ci4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5Lmg6IFVwZGF0ZWQgdG8gdGFrZSBhbiBPd25QdHImIGFuZAorICAg
ICAgICBub3QgcmV0dXJuIFN5bmNSZXBseU1vZGUuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmg6IERpdHRvLgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXQyL21lc3NhZ2VzLnB5OiBVcGRhdGVkIGZvciBjaGFuZ2VzIHRvIHN5bmMgbWVzc2Fn
ZXMuCisgICAgICAgIEVsaW1pbmF0ZWQgdW5uZWVkZWQgcmV0dXJuIHR5cGVzIGFuZCB1c2UgZWl0
aGVyIGdldCgpIG9yIHJlbGVhc2UoKSBhcworICAgICAgICBhcHBvcm9wcmlhdGUgdG8gY2FsbCB0
aGUgaGFuZGxlTWVzc2FnZSBmdW5jdGlvbnMuIEFub3RoZXIgb3B0aW9uIHdvdWxkCisgICAgICAg
IGJlIHRvIGNoYW5nZSB0aGUgaGFuZGxlTWVzc2FnZSBmdW5jdGlvbiB0ZW1wbGF0ZSB0byB0YWtl
IGFuIE93blB0ciYuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXNfdW5pdHRl
c3QucHk6IFRyaWVkIHRvIHVwZGF0ZSB0aGlzIHRvby4KKyAgICAgICAgSSBkb24ndCBrbm93IGhv
dyB0byBydW4gdGhlIHRlc3QsIHRob3VnaC4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyLmg6IFVwZGF0ZWQgdG8gdGFrZSBhbiBPd25QdHImIGFuZAor
ICAgICAgICBub3QgcmV0dXJuIFN5bmNSZXBseU1vZGUuCisgICAgICAgICogU2hhcmVkL1BsdWdp
bnMvTlBSZW1vdGVPYmplY3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJlbW90ZU9iamVj
dE1hcDo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaDogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDogRGl0dG8u
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlU3luY01l
c3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5oOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpkaWRSZWNlaXZlU3luY01lc3NhZ2Up
OiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmg6IERpdHRvLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oOiBEaXR0by4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVTeW5j
TWVzc2FnZSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDog
RGl0dG8uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVj
dC5jcHA6IEFkZGVkIGEgbWlzc2luZyBpbmNsdWRlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6IFVwZGF0ZWQgdG8g
dGFrZQorICAgICAgICBhbiBPd25QdHImIGFuZCBub3QgcmV0dXJuIFN5bmNSZXBseU1vZGUuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmg6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOiBEaXR0by4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZSk6IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOiBE
aXR0by4KKwogMjAxMS0wNS0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA4NjY4NykK
KysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxOSwzNCArNjE5LDIzIEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hT
eW5jTWVzc2FnZShNZXMKIHsKICAgICBBU1NFUlQobWVzc2FnZUlELmlzU3luYygpKTsKIAotICAg
IC8vIERlY29kZSB0aGUgc3luYyByZXF1ZXN0IElELgogICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0
SUQgPSAwOwotCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZVVJbnQ2NChzeW5jUmVxdWVzdElE
KSB8fCAhc3luY1JlcXVlc3RJRCkgewogICAgICAgICAvLyBXZSByZWNlaXZlZCBhbiBpbnZhbGlk
IHN5bmMgbWVzc2FnZS4KICAgICAgICAgYXJndW1lbnRzLT5tYXJrSW52YWxpZCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQ3JlYXRlIG91ciByZXBseSBlbmNvZGVyLgogICAg
IE93blB0cjxBcmd1bWVudEVuY29kZXI+IHJlcGx5RW5jb2RlciA9IEFyZ3VtZW50RW5jb2Rlcjo6
Y3JlYXRlKHN5bmNSZXF1ZXN0SUQpOwotICAgIAorCiAgICAgLy8gSGFuZCBvZmYgYm90aCB0aGUg
ZGVjb2RlciBhbmQgZW5jb2RlciB0byB0aGUgY2xpZW50LgotICAgIFN5bmNSZXBseU1vZGUgc3lu
Y1JlcGx5TW9kZSA9IG1fY2xpZW50LT5kaWRSZWNlaXZlU3luY01lc3NhZ2UodGhpcywgbWVzc2Fn
ZUlELCBhcmd1bWVudHMsIHJlcGx5RW5jb2Rlci5nZXQoKSk7CisgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZSh0aGlzLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHlFbmNvZGVy
KTsKIAogICAgIC8vIEZJWE1FOiBJZiB0aGUgbWVzc2FnZSB3YXMgaW52YWxpZCwgd2Ugc2hvdWxk
IHNlbmQgYmFjayBhIFN5bmNNZXNzYWdlRXJyb3IuCiAgICAgQVNTRVJUKCFhcmd1bWVudHMtPmlz
SW52YWxpZCgpKTsKIAotICAgIGlmIChzeW5jUmVwbHlNb2RlID09IE1hbnVhbFJlcGx5KSB7Ci0g
ICAgICAgIC8vIFRoZSBjbGllbnQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgcmVwbHkgZW5j
b2RlciBhbmQgc2VuZCBpdCBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuCi0gICAgICAgIEFy
Z3VtZW50RW5jb2RlciAqZW5jb2RlciA9IHJlcGx5RW5jb2Rlci5sZWFrUHRyKCk7Ci0gICAgICAg
ICh2b2lkKWVuY29kZXI7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFNlbmQg
dGhlIHJlcGx5LgotICAgIHNlbmRTeW5jUmVwbHkocmVwbHlFbmNvZGVyLnJlbGVhc2UoKSk7Cisg
ICAgaWYgKHJlcGx5RW5jb2RlcikKKyAgICAgICAgc2VuZFN5bmNSZXBseShyZXBseUVuY29kZXIu
cmVsZWFzZSgpKTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpkaWRGYWlsVG9TZW5kU3luY01lc3Nh
Z2UoKQpJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9u
LmgJKHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9D
b25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDExICs1Niw2IEBAIG5hbWVzcGFjZSBD
b3JlSVBDIHsKIAogY2xhc3MgTWVzc2FnZUlEOwogICAgIAotZW51bSBTeW5jUmVwbHlNb2RlIHsK
LSAgICBBdXRvbWF0aWNSZXBseSwKLSAgICBNYW51YWxSZXBseQotfTsKLQogZW51bSBNZXNzYWdl
U2VuZEZsYWdzIHsKICAgICAvLyBXaGV0aGVyIHRoaXMgbWVzc2FnZSBzaG91bGQgYmUgZGlzcGF0
Y2hlZCB3aGVuIHdhaXRpbmcgZm9yIGEgc3luYyByZXBseS4KICAgICAvLyBUaGlzIGlzIHRoZSBk
ZWZhdWx0IGZvciBzeW5jaHJvbm91cyBtZXNzYWdlcy4KQEAgLTgwLDcgKzc1LDcgQEAgcHVibGlj
OgogICAgIGNsYXNzIE1lc3NhZ2VSZWNlaXZlciB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29ubmVjdGlvbiosIE1lc3NhZ2VJRCwgQXJndW1l
bnREZWNvZGVyKikgPSAwOwotICAgICAgICB2aXJ0dWFsIFN5bmNSZXBseU1vZGUgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKENvbm5lY3Rpb24qLCBNZXNzYWdlSUQsIEFyZ3VtZW50RGVjb2RlciosIEFy
Z3VtZW50RW5jb2RlciopIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBBdXRvbWF0aWNS
ZXBseTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvbm5l
Y3Rpb24qLCBNZXNzYWdlSUQsIEFyZ3VtZW50RGVjb2RlciosIE93blB0cjxBcmd1bWVudEVuY29k
ZXI+JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIH5NZXNzYWdlUmVjZWl2ZXIoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCShyZXZpc2lvbiA4NjY4NykKKysr
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTIsMTMgKzMxMiwxMyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2VWYXJpYWRpYyhB
cmd1bWVudERlY29kCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVu
YW1lIE1GPgotdm9pZCBoYW5kbGVNZXNzYWdlRGVsYXllZChDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50RGVjb2RlciwgQXJndW1lbnRFbmNvZGVyKiByZXBs
eUVuY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCit2b2lkIGhhbmRsZU1lc3NhZ2VEZWxh
eWVkKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIEFyZ3VtZW50RGVjb2RlciogYXJndW1lbnREZWNv
ZGVyLCBQYXNzT3duUHRyPEFyZ3VtZW50RW5jb2Rlcj4gcmVwbHlFbmNvZGVyLCBDKiBvYmplY3Qs
IE1GIGZ1bmN0aW9uKQogewogICAgIHR5cGVuYW1lIFQ6OkRlY29kZVR5cGU6OlZhbHVlVHlwZSBh
cmd1bWVudHM7CiAgICAgaWYgKCFhcmd1bWVudERlY29kZXItPmRlY29kZShhcmd1bWVudHMpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5PiBk
ZWxheWVkUmVwbHkgPSBhZG9wdFJlZihuZXcgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5KGNvbm5l
Y3Rpb24sIGFkb3B0UHRyKHJlcGx5RW5jb2RlcikpKTsKKyAgICBSZWZQdHI8dHlwZW5hbWUgVDo6
RGVsYXllZFJlcGx5PiBkZWxheWVkUmVwbHkgPSBhZG9wdFJlZihuZXcgdHlwZW5hbWUgVDo6RGVs
YXllZFJlcGx5KGNvbm5lY3Rpb24sIHJlcGx5RW5jb2RlcikpOwogICAgIGNhbGxNZW1iZXJGdW5j
dGlvbihhcmd1bWVudHMsIGRlbGF5ZWRSZXBseS5yZWxlYXNlKCksIG9iamVjdCwgZnVuY3Rpb24p
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmgJKHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIENv
cmVJUEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Db250cm9sbGVyUHJveHlN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93
blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAJ
KHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCwyNCArMTE0LDI2IEBAIHZv
aWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXMKICAgICBwbHVnaW5Db250cm9s
bGVyUHJveHktPmRpZFJlY2VpdmVQbHVnaW5Db250cm9sbGVyUHJveHlNZXNzYWdlKGNvbm5lY3Rp
b24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKIH0KIAotQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJl
cGx5KQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpCiB7CiAgICAgdWludDY0X3QgZGVzdGluYXRpb25JRCA9
IGFyZ3VtZW50cy0+ZGVzdGluYXRpb25JRCgpOwogCi0gICAgaWYgKCFkZXN0aW5hdGlvbklEKQot
ICAgICAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Uo
Y29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKKyAgICBpZiAoIWRlc3Rp
bmF0aW9uSUQpIHsKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KIAotICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNs
YXNzTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI+KCkpCi0gICAgICAgIHJldHVybiBtX25wUmVtb3Rl
T2JqZWN0TWFwLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBh
cmd1bWVudHMsIHJlcGx5KTsKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VD
bGFzc05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPigpKSB7CisgICAgICAgIG1fbnBSZW1vdGVPYmpl
Y3RNYXAtPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cywgcmVwbHkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgUGx1Z2luQ29udHJv
bGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdl
dChhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSk7CiAgICAgaWYgKCFwbHVnaW5Db250cm9sbGVy
UHJveHkpCi0gICAgICAgIHJldHVybiBDb3JlSVBDOjpBdXRvbWF0aWNSZXBseTsKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgUGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0
b3IgcHJvdGVjdG9yKHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+YXNQbHVnaW5Db250cm9sbGVyKCkp
OwotICAgIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgcmVwbHlNb2RlID0gcGx1Z2luQ29udHJvbGxl
clByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRyb2xsZXJQcm94eU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKLQotICAgIHJldHVybiByZXBseU1v
ZGU7CisgICAgcGx1Z2luQ29udHJvbGxlclByb3h5LT5kaWRSZWNlaXZlU3luY1BsdWdpbkNvbnRy
b2xsZXJQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3ND
b25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NTksMTMgKzU5LDEzIEBAIHByaXZhdGU6CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0g
ICAgdmlydHVhbCBDb3JlSVBDOjpTeW5jUmVwbHlNb2RlIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXI+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rp
b24qKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKENvcmVJUEM6
OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
TWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAKICAgICAvLyBNZXNz
YWdlIGhhbmRsZXJzLgotICAgIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2ZVN5bmNX
ZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwogICAg
IHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIGJvb2wm
IHJlc3VsdCwgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogICAgIHZvaWQgZGVzdHJv
eVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQkocmV2aXNpb24gODY2ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTQwMSwxMiArNDAxLDggQEAgZGVmIHN5bmNfY2FzZV9zdGF0ZW1lbnQocmVjZWl2ZXIsIG1lc3Nh
ZwogCiAgICAgcmVzdWx0ID0gW10KICAgICByZXN1bHQuYXBwZW5kKCcgICAgY2FzZSBNZXNzYWdl
czo6JXM6OiVzOlxuJyAlIChyZWNlaXZlci5uYW1lLCBtZXNzYWdlLmlkKCkpKQotICAgIHJlc3Vs
dC5hcHBlbmQoJyAgICAgICAgQ29yZUlQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNhcmd1bWVu
dHMsIHJlcGx5LCB0aGlzLCAmJXMpO1xuJyAlIChkaXNwYXRjaF9mdW5jdGlvbiwgcmVjZWl2ZXIu
bmFtZSwgbWVzc2FnZS5uYW1lLCAnY29ubmVjdGlvbiwgJyBpZiBtZXNzYWdlLmlzX2RlbGF5ZWQg
ZWxzZSAnJywgaGFuZGxlcl9mdW5jdGlvbihyZWNlaXZlciwgbWVzc2FnZSkpKQotCi0gICAgaWYg
bWVzc2FnZS5pc19kZWxheWVkOgotICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIHJldHVy
biBDb3JlSVBDOjpNYW51YWxSZXBseTtcbicpCi0gICAgZWxzZToKLSAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0b21hdGljUmVwbHk7XG4nKQorICAgIHJl
c3VsdC5hcHBlbmQoJyAgICAgICAgQ29yZUlQQzo6JXM8TWVzc2FnZXM6OiVzOjolcz4oJXNhcmd1
bWVudHMsIHJlcGx5LiVzKCksIHRoaXMsICYlcyk7XG4nICUgKGRpc3BhdGNoX2Z1bmN0aW9uLCBy
ZWNlaXZlci5uYW1lLCBtZXNzYWdlLm5hbWUsICdjb25uZWN0aW9uLCAnIGlmIG1lc3NhZ2UuaXNf
ZGVsYXllZCBlbHNlICcnLCAncmVsZWFzZScgaWYgbWVzc2FnZS5pc19kZWxheWVkIGVsc2UgJ2dl
dCcsIGhhbmRsZXJfZnVuY3Rpb24ocmVjZWl2ZXIsIG1lc3NhZ2UpKSkKKyAgICByZXN1bHQuYXBw
ZW5kKCcgICAgICAgIHJldHVybjtcbicpCiAKICAgICByZXR1cm4gc3Vycm91bmRfaW5fY29uZGl0
aW9uKCcnLmpvaW4ocmVzdWx0KSwgbWVzc2FnZS5jb25kaXRpb24pCiAKQEAgLTYyMiw3ICs2MTgs
NyBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKGZpbGUpOgogCiAgICAgaWYgc3luY19t
ZXNzYWdlczoKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQotICAgICAgICByZXN1bHQuYXBw
ZW5kKCdDb3JlSVBDOjpTeW5jUmVwbHlNb2RlICVzOjpkaWRSZWNlaXZlU3luYyVzTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiVzLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
KiByZXBseSlcbicgJSAocmVjZWl2ZXIubmFtZSwgcmVjZWl2ZXIubmFtZSwgJyBjb25uZWN0aW9u
JyBpZiBzeW5jX2RlbGF5ZWRfbWVzc2FnZXMgZWxzZSAnJykpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ3ZvaWQgJXM6OmRpZFJlY2VpdmVTeW5jJXNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
JXMsIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpXG4n
ICUgKHJlY2VpdmVyLm5hbWUsIHJlY2VpdmVyLm5hbWUsICcgY29ubmVjdGlvbicgaWYgc3luY19k
ZWxheWVkX21lc3NhZ2VzIGVsc2UgJycpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCd7XG4nKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgc3dpdGNoIChtZXNzYWdlSUQuZ2V0PE1lc3NhZ2Vz
Ojolczo6S2luZD4oKSkge1xuJyAlIHJlY2VpdmVyLm5hbWUpCiAgICAgICAgIHJlc3VsdCArPSBb
c3luY19jYXNlX3N0YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSkgZm9yIG1lc3NhZ2UgaW4gc3lu
Y19tZXNzYWdlc10KQEAgLTYzMCw3ICs2MjYsNiBAQCBkZWYgZ2VuZXJhdGVfbWVzc2FnZV9oYW5k
bGVyKGZpbGUpOgogICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgICAgIGJyZWFrO1xuJykKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIH1cblxuJykKICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpO1xuJykKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IHJldHVybiBDb3JlSVBDOjpBdXRvbWF0aWNSZXBseTtcbicpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJ31cbicpCiAKICAgICByZXN1bHQuYXBwZW5kKCdcbn0gLy8gbmFtZXNwYWNlIFdlYktpdFxu
JykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlc191bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvU2NyaXB0
cy93ZWJraXQyL21lc3NhZ2VzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NTYsMjEg
KzY1NiwyMSBAQCB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShDCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUNvcmVJUEM6OlN5bmNSZXBseU1vZGUgV2ViUGFn
ZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cywgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiByZXBseSkKK3ZvaWQg
V2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNXZWJQYWdlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4m
IHJlcGx5KQogewogICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxNZXNzYWdlczo6V2ViUGFnZTo6
S2luZD4oKSkgewogICAgIGNhc2UgTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZVBsdWdpbklEOgot
ICAgICAgICBDb3JlSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQ
bHVnaW4+KGFyZ3VtZW50cywgcmVwbHksIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOwor
ICAgICAgICBDb3JlSVBDOjpoYW5kbGVNZXNzYWdlPE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVQ
bHVnaW4+KGFyZ3VtZW50cywgcmVwbHkuZ2V0KCksIHRoaXMsICZXZWJQYWdlOjpjcmVhdGVQbHVn
aW4pOwogICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0b21hdGljUmVwbHk7CiAgICAgY2FzZSBN
ZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEFsZXJ0SUQ6Ci0gICAgICAgIENvcmVJUEM6
OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRBbGVydD4oYXJn
dW1lbnRzLCByZXBseSwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRBbGVydCk7CisgICAg
ICAgIENvcmVJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRBbGVydD4oYXJndW1lbnRzLCByZXBseS5nZXQoKSwgdGhpcywgJldlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHRBbGVydCk7CiAgICAgICAgIHJldHVybiBDb3JlSVBDOjpBdXRvbWF0aWNSZXBseTsKICAg
ICBjYXNlIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbklEOgot
ICAgICAgICBDb3JlSVBDOjpoYW5kbGVNZXNzYWdlRGVsYXllZDxNZXNzYWdlczo6V2ViUGFnZTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+KGNvbm5lY3Rpb24sIGFyZ3VtZW50cywgcmVwbHks
IHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CisgICAgICAgIENv
cmVJUEM6OmhhbmRsZU1lc3NhZ2VEZWxheWVkPE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbj4oY29ubmVjdGlvbiwgYXJndW1lbnRzLCByZXBseS5yZWxlYXNlKCks
IHRoaXMsICZXZWJQYWdlOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAgICAgICAgIHJl
dHVybiBDb3JlSVBDOjpNYW51YWxSZXBseTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgY2FzZSBN
ZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnRJRDoKLSAgICAgICAgQ29yZUlQQzo6
aGFuZGxlTWVzc2FnZTxNZXNzYWdlczo6V2ViUGFnZTo6SW50ZXJwcmV0S2V5RXZlbnQ+KGFyZ3Vt
ZW50cywgcmVwbHksIHRoaXMsICZXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk7CisgICAgICAg
IENvcmVJUEM6OmhhbmRsZU1lc3NhZ2U8TWVzc2FnZXM6OldlYlBhZ2U6OkludGVycHJldEtleUV2
ZW50Pihhcmd1bWVudHMsIHJlcGx5LmdldCgpLCB0aGlzLCAmV2ViUGFnZTo6aW50ZXJwcmV0S2V5
RXZlbnQpOwogICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0b21hdGljUmVwbHk7CiAjZW5kaWYK
ICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCShyZXZpc2lvbiA4NjY4NykKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyPiBjcmVhdGUoTlBSZW1vdGVPYmplY3RNYXAqLCBQ
bHVnaW4qLCB1aW50NjRfdCBucE9iamVjdElELCBOUE9iamVjdCopOwogICAgIH5OUE9iamVjdE1l
c3NhZ2VSZWNlaXZlcigpOwogCi0gICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNlaXZl
U3luY05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTlBPYmplY3RNZXNzYWdl
UmVjZWl2ZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29k
ZXI+Jik7CiAKICAgICBQbHVnaW4qIHBsdWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luOyB9
CiAgICAgTlBPYmplY3QqIG5wT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9ucE9iamVjdDsgfQpJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2Jq
ZWN0TWFwLmNwcAkocmV2aXNpb24gODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxOSwxMyArMjE5
LDEzIEBAIHZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OnBsdWdpbkRlc3Ryb3llZCgKICAgICB9CiB9
CiAKLUNvcmVJUEM6OlN5bmNSZXBseU1vZGUgTlBSZW1vdGVPYmplY3RNYXA6OmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNz
YWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKiByZXBseSkKK3ZvaWQgTlBSZW1vdGVPYmplY3RNYXA6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3Jl
SVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3Vt
ZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mIHJlcGx5KQogewogICAgIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIgPSBtX3JlZ2lzdGVyZWROUE9i
amVjdHMuZ2V0KGFyZ3VtZW50cy0+ZGVzdGluYXRpb25JRCgpKTsKICAgICBpZiAoIW1lc3NhZ2VS
ZWNlaXZlcikKLSAgICAgICAgcmV0dXJuIENvcmVJUEM6OkF1dG9tYXRpY1JlcGx5OworICAgICAg
ICByZXR1cm47CiAKLSAgICByZXR1cm4gbWVzc2FnZVJlY2VpdmVyLT5kaWRSZWNlaXZlU3luY05Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3Vt
ZW50cywgcmVwbHkpOworICAgIG1lc3NhZ2VSZWNlaXZlci0+ZGlkUmVjZWl2ZVN5bmNOUE9iamVj
dE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMs
IHJlcGx5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OUFJlbW90ZU9iamVjdE1hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmgJKHJldmlzaW9uIDg2
Njg3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBs
dWdpbkRlc3Ryb3llZChQbHVnaW4qKTsKIAotICAgIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJ
UEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2Rlcj4mIHJlcGx5KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOUFJlbW90ZU9i
amVjdE1hcChDb3JlSVBDOjpDb25uZWN0aW9uKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ3LDIwICs2NDcsMjMg
QEAgdm9pZCBXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCi1Db3JlSVBDOjpTeW5jUmVwbHlNb2RlIFdlYkNvbnRleHQ6OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3Jl
SVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGFyZ3Vt
ZW50cywgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiByZXBseSkKK3ZvaWQgV2ViQ29udGV4dDo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpCiB7Ci0gICAg
aWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJDb250ZXh0PigpKQotICAg
ICAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJDb250ZXh0TWVzc2FnZShjb25uZWN0aW9uLCBt
ZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkpOworICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQ
Qzo6TWVzc2FnZUNsYXNzV2ViQ29udGV4dD4oKSkgeworICAgICAgICBkaWRSZWNlaXZlU3luY1dl
YkNvbnRleHRNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6
Ok1lc3NhZ2VDbGFzc0Rvd25sb2FkUHJveHk+KCkpIHsKICAgICAgICAgaWYgKERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHkgPSBtX2Rvd25sb2Fkcy5nZXQoYXJndW1lbnRzLT5kZXN0aW5hdGlv
bklEKCkpLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHktPmRpZFJlY2Vp
dmVTeW5jRG93bmxvYWRQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVu
dHMsIHJlcGx5KTsKLQotICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0b21hdGljUmVwbHk7Cisg
ICAgICAgICAgICBkb3dubG9hZFByb3h5LT5kaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNz
YWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdl
Q2xhc3NXZWJJY29uRGF0YWJhc2U+KCkpCi0gICAgICAgIHJldHVybiBtX2ljb25EYXRhYmFzZS0+
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCBy
ZXBseSk7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJJY29u
RGF0YWJhc2U+KCkpIHsKKyAgICAgICAgbV9pY29uRGF0YWJhc2UtPmRpZFJlY2VpdmVTeW5jTWVz
c2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIAogICAgIHN3aXRjaCAobWVzc2FnZUlELmdldDxXZWJDb250ZXh0
TGVnYWN5TWVzc2FnZTo6S2luZD4oKSkgewogICAgICAgICBjYXNlIFdlYkNvbnRleHRMZWdhY3lN
ZXNzYWdlOjpQb3N0U3luY2hyb25vdXNNZXNzYWdlOiB7CkBAIC02NzAsMTggKzY3MywxNiBAQCBD
b3JlSVBDOjpTeW5jUmVwbHlNb2RlIFdlYkNvbnRleHQ6OmRpZFJlCiAgICAgICAgICAgICBSZWZQ
dHI8QVBJT2JqZWN0PiBtZXNzYWdlQm9keTsKICAgICAgICAgICAgIFdlYkNvbnRleHRVc2VyTWVz
c2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIobWVzc2FnZUJvZHksIHRoaXMpOwogICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQobWVzc2FnZU5hbWUsIG1lc3Nh
Z2VEZWNvZGVyKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENvcmVJUEM6OkF1dG9tYXRpY1Jl
cGx5OworICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgUmVmUHRyPEFQSU9i
amVjdD4gcmV0dXJuRGF0YTsKICAgICAgICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5LmdldCgpLCByZXR1
cm5EYXRhKTsKICAgICAgICAgICAgIHJlcGx5LT5lbmNvZGUoQ29yZUlQQzo6SW4oV2ViQ29udGV4
dFVzZXJNZXNzYWdlRW5jb2RlcihyZXR1cm5EYXRhLmdldCgpKSkpOwotICAgICAgICAgICAgcmV0
dXJuIENvcmVJUEM6OkF1dG9tYXRpY1JlcGx5OworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgV2ViQ29udGV4dExlZ2FjeU1lc3NhZ2U6OlBvc3RNZXNzYWdlOgog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotCi0gICAgcmV0dXJuIENv
cmVJUEM6OkF1dG9tYXRpY1JlcGx5OwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OnNldEVuaGFuY2Vk
QWNjZXNzaWJpbGl0eShib29sIGZsYWcpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgJKHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaChXZWJDb3JlOjpMaW5rSGFzaCk7CiAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIENvcmVJUEM6OlN5bmNSZXBseU1v
ZGUgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0
cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKICAgICB2b2lkIHNldENhY2hlTW9kZWwo
Q2FjaGVNb2RlbCk7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZU1vZGVsOyB9CkBAIC0xOTksNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkNvbnRleHRNZXNzYWdlUmVjZWl2ZXIu
Y3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViQ29udGV4dE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0g
ICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNlaXZlU3luY1dlYkNvbnRleHRNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNXZWJDb250ZXh0TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyPiYpOwogCiAgICAgc3RhdGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQq
IGNvbnRleHQpOwogICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3Bw
CShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOSArNjQsOSBAQCB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFJlY2VpCiAgICAgZGlkUmVjZWl2ZVdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1l
bnRzKTsKIH0KIAotQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiBhcmd1bWVudHMsIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogcmVwbHkpCit2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4mIHJlcGx5KQogewotICAgIHJldHVybiBkaWRSZWNlaXZlU3luY1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBs
eSk7CisgICAgZGlkUmVjZWl2ZVN5bmNXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZShj
b25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4oKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5o
CShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0V2ViVmlldyhQbGF0Zm9ybVdlYlZpZXcqKTsKIAogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2RlciogcmVwbHkpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkp
OwogCiAgICAgdm9pZCB3aWxsRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgdm9pZCBkaWRFbnRlckZ1
bGxTY3JlZW4oKTsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtV2Vi
VmlldyogbV93ZWJWaWV3OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBk
aWRSZWNlaXZlU3luY1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
YXJndW1lbnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMsIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+JiByZXBseSk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJY29uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsOSAr
MjY0LDkgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZFJlY2VpdmVNZXNzYWdlKAogICAgIGRp
ZFJlY2VpdmVXZWJJY29uRGF0YWJhc2VNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVj
b2Rlcik7CiB9CiAKLUNvcmVJUEM6OlN5bmNSZXBseU1vZGUgV2ViSWNvbkRhdGFiYXNlOjpkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KQordm9pZCBXZWJJY29uRGF0YWJhc2U6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBD
b3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+JiByZXBseSkKIHsKLSAgICBy
ZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJJY29uRGF0YWJhc2VNZXNzYWdlKGNvbm5lY3Rpb24sIG1l
c3NhZ2VJRCwgZGVjb2RlciwgcmVwbHkpOworICAgIGRpZFJlY2VpdmVTeW5jV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIsIHJlcGx5KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykljb25EYXRhYmFzZS5oCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJY29uRGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFVSTEltcG9ydCgpOwogICAgIAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1Jl
cGx5TW9kZSBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJ
UEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKik7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAogcHJpdmF0ZToKICAgICBXZWJJ
Y29uRGF0YWJhc2UoV2ViQ29udGV4dCopOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJJY29uRGF0YWJhc2VNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIENv
cmVJUEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2ZVN5bmNXZWJJY29uRGF0YWJhc2VNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVN5bmNXZWJJY29uRGF0YWJhc2VNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXI+Jik7CiAKICAgICBXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7CiAg
ICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
aAkocmV2aXNpb24gODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVj
dG9yUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1JlcGx5
TW9kZSBkaWRSZWNlaXZlU3luY1dlYkluc3BlY3RvclByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
SUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXI+Jik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGlzSW5zcGVjdG9yUGFnZShXZWJQ
YWdlUHJveHkqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yCiAgICAgZGlkUmVjZWl2ZVdlYlBhZ2VQcm94
eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogYXJndW1lbnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4m
IHJlcGx5KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKG1lc3NhZ2VJRC5pczxD
b3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJJbnNwZWN0b3JQcm94eT4oKSkgewpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gODY2ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
Niw3ICs0MzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydERyYWdEcm9wKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBpbWFnZVBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ1Bv
aW50LCB1aW50NjRfdCBva0VmZmVjdCwgY29uc3QgSGFzaE1hcDxVSU5ULCBWZWN0b3I8U3RyaW5n
PiA+JiBkYXRhTWFwLCB1aW50NjRfdCBmaWxlU2l6ZSwgY29uc3QgU3RyaW5nJiBwYXRobmFtZSwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGZpbGVDb250ZW50SGFuZGxlLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBkcmFnSW1hZ2VTaXplLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
ZHJhZ0ltYWdlSGFuZGxlLCBib29sIGlzTGlua0RyYWcpOwogI2VuZGlmCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyPiYpOwogCiAgICAgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCk7CiAgICAg
dm9pZCBwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNlaXZlU3luY1dl
YlBhZ2VQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKik7
CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlBhZ2VQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAogICAgIHZvaWQgZGlkQ3JlYXRl
TWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFyZW50RnJhbWVJRCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gODY2ODcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYwLDI1ICsyNjAsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJl
Y2VpdmVNZXNzYWdlKAogICAgIHBhZ2VQcm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogfQogCi1Db3JlSVBDOjpTeW5jUmVwbHlNb2RlIFdl
YlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogYXJndW1lbnRzLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5j
b2Rlcj4mIHJlcGx5KQogewotICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNs
YXNzV2ViUHJvY2Vzc1Byb3h5PigpKQotICAgICAgICByZXR1cm4gZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBs
eSk7CisgICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNz
UHJveHk+KCkpIHsKKyAgICAgICAgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dl
YkNvbnRleHQ+KCkgfHwgbWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYkNvbnRl
eHRMZWdhY3k+KCkgCi0gICAgICAgIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xh
c3NEb3dubG9hZFByb3h5PigpIHx8IG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NX
ZWJJY29uRGF0YWJhc2U+KCkpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQtPmRpZFJlY2VpdmVT
eW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkpOworICAg
ICAgICB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRG93bmxvYWRQcm94eT4o
KSB8fCBtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlPigp
KSB7CisgICAgICAgIG1fY29udGV4dC0+ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24s
IG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7CisgICAgfQogCiAgICAgdWludDY0X3QgcGFn
ZUlEID0gYXJndW1lbnRzLT5kZXN0aW5hdGlvbklEKCk7CiAgICAgaWYgKCFwYWdlSUQpCi0gICAg
ICAgIHJldHVybiBDb3JlSVBDOjpBdXRvbWF0aWNSZXBseTsKKyAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIFdlYlBhZ2VQcm94eSogcGFnZVByb3h5ID0gd2ViUGFnZShwYWdlSUQpOwogICAgIGlm
ICghcGFnZVByb3h5KQotICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0b21hdGljUmVwbHk7Cisg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBwYWdlUHJveHktPmRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkpOwotICAgIHJldHVybiBD
b3JlSVBDOjpBdXRvbWF0aWNSZXBseTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENs
b3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIHZpcnR1YWwg
Q29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYp
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5k
VGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHByaXZh
dGU6CiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViUHJvY2Vzc1Byb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3NQcm94eU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNlaXZlU3lu
Y1dlYlByb2Nlc3NQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogcmVwbHkpOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNz
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyPiYgcmVwbHkpOwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciBtX3Jlc3BvbnNp
dmVuZXNzVGltZXI7CiAgICAgUmVmUHRyPENvcmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlRG93bmxvYWRQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7Ci0gICAgQ29yZUlQQzo6U3lu
Y1JlcGx5TW9kZSBkaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlcios
IENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNEb3du
bG9hZFByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyPiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoV2ViQ29udGV4
dCopOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiA4NjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU1OSwxOCArNTU5LDE3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dGVy
bWluYXRlKCkKICAgICBtX3J1bkxvb3AtPnN0b3AoKTsKIH0KIAotQ29yZUlQQzo6U3luY1JlcGx5
TW9kZSBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBhcmd1bWVudHMsIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogcmVwbHkp
Cit2b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpB
cmd1bWVudERlY29kZXIqIGFyZ3VtZW50cywgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rl
cj4mIHJlcGx5KQogeyAgIAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGFyZ3VtZW50cy0+ZGVzdGlu
YXRpb25JRCgpOwogICAgIGlmICghcGFnZUlEKQotICAgICAgICByZXR1cm4gQ29yZUlQQzo6QXV0
b21hdGljUmVwbHk7CisgICAgICAgIHJldHVybjsKICAgICAKICAgICBXZWJQYWdlKiBwYWdlID0g
d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuIENvcmVJUEM6
OkF1dG9tYXRpY1JlcGx5OworICAgICAgICByZXR1cm47CiAgICAgCiAgICAgcGFnZS0+ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7
Ci0gICAgcmV0dXJuIENvcmVJUEM6OkF1dG9tYXRpY1JlcGx5OwogfQogCiB2b2lkIFdlYlByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENv
cmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJn
dW1lbnRzKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOwotICAgIHZpcnR1YWwgQ29yZUlQQzo6U3luY1JlcGx5TW9kZSBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShD
b3JlSVBDOjpDb25uZWN0aW9uKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlk
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY01lc3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiop
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCShyZXZpc2lvbiA4NjY4NykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSwxNiArMTA5LDE5IEBAIHZvaWQgUGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmUKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAot
Q29yZUlQQzo6U3luY1JlcGx5TW9kZSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1l
c3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzLCBD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIHJlcGx5KQordm9pZCBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rp
b24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkpCiB7
Ci0gICAgaWYgKG1lc3NhZ2VJRC5pczxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NOUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlcj4oKSkKLSAgICAgICAgcmV0dXJuIG1fbnBSZW1vdGVPYmplY3RNYXAtPmRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50cywgcmVwbHkp
OworICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzTlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI+KCkpIHsKKyAgICAgICAgbV9ucFJlbW90ZU9iamVjdE1hcC0+ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoUGx1Z2luUHJveHkqIHBsdWdpblByb3h5
ID0gbV9wbHVnaW5zLmdldChhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkpCi0gICAgICAgIHJl
dHVybiBwbHVnaW5Qcm94eS0+ZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94eU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKKyAgICBpZiAoUGx1Z2luUHJveHkq
IHBsdWdpblByb3h5ID0gbV9wbHVnaW5zLmdldChhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkp
IHsKKyAgICAgICAgcGx1Z2luUHJveHktPmRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ29yZUlQ
Qzo6QXV0b21hdGljUmVwbHk7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgJ
KHJldmlzaW9uIDg2Njg3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2aXJ0dWFsIENvcmVJ
UEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCk7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVk
T3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCShyZXZpc2lvbiA4NjY4NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVk
KCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogYXJndW1lbnRzKTsKLSAgICBDb3JlSVBDOjpTeW5jUmVwbHlNb2RlIGRpZFJlY2Vp
dmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94eU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RQcm90b3R5cGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0lkZW50aWZpZXJSZXAuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24g
ODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OTQsOSArMTk5NCw5IEBAIHZvaWQgV2ViUGFnZTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoQ29yZUlQQzoKICAgICBkaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOwogfQogCi1Db3JlSVBDOjpTeW5jUmVwbHlNb2Rl
IFdlYlBhZ2U6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50cywgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiByZXBseSkKK3ZvaWQg
V2ViUGFnZTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogYXJndW1lbnRzLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYgcmVwbHkp
CiB7ICAgCi0gICAgcmV0dXJuIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoY29ubmVjdGlv
biwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKKyAgICBkaWRSZWNlaXZlU3luY1dlYlBh
Z2VNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgYXJndW1lbnRzLCByZXBseSk7CiB9CiAg
ICAgCiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdCogV2ViUGFnZTo6YmFja0ZvcndhcmRM
aXN0KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gODY2ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNyArMTkxLDcgQEAgcHVibGljOgogCiAg
ICAgLy8gLS0gQ2FsbGVkIGZyb20gV2ViUHJvY2Vzcy4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciopOwotICAgIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopOworICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+Jik7CiAKICAgICAvLyAtLSBJbmplY3RlZEJ1bmRsZSBtZXRob2RzCiAgICAg
dm9pZCBpbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChXS0J1bmRsZVBh
Z2VDb250ZXh0TWVudUNsaWVudCopOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciopOwotICAgIENvcmVJUEM6OlN5bmNSZXBseU1vZGUgZGlkUmVjZWl2
ZVN5bmNXZWJQYWdlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUGFnZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3du
UHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAogI2lmICFQTEFURk9STShNQUMpCiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50KGNvbnN0IFdlYkNvcmU6Oktl
eWJvYXJkRXZlbnQqKTsK
</data>
<flag name="review"
          id="87023"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>